Docker
约 1581 字大约 5 分钟
docker容器
2020-05-07
一句话摘要:Docker 安装、镜像管理、容器操作、常用软件部署的命令速查手册。
背景与动机
Docker 是目前最流行的容器化技术,掌握常用命令是开发和运维的基础技能。本文整理了 Docker 的常用命令,涵盖安装、镜像管理、容器操作以及常用软件部署,适合作为日常速查手册。
安装
yum 方式(CentOS/RHEL)
yum -y install dockerapt 方式(Ubuntu/Debian)
# 通过 https 使用仓库
sudo apt install apt-transport-https ca-certificates curl software-properties-common
# 添加 Docker 官方密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加仓库
vim /etc/apt/sources.list.d/docker.list
# 写入:deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
# 更新并安装
sudo apt-get update
sudo apt install docker-ce
# 验证安装
docker --version服务管理
启动与停止
# 启动 Docker 服务
sudo systemctl start docker
# 查看服务状态
systemctl status docker.service
# 设置开机自启
systemctl enable docker卸载
# 查看已安装的 Docker 包
yum list installed | grep docker
# 卸载(示例)
sudo yum -y remove containerd.io.x86_64
# 清理数据目录
sudo rm -rf /var/lib/dockerDocker Machine
Docker Machine 是用于在多平台创建和管理 Docker 主机的工具。
# 查看版本
docker-machine version
# 查询已创建的主机
docker-machine ls
# 创建新主机
docker-machine create
# 环境配置
docker-machine env镜像管理
仓库操作
# 登录镜像仓库
docker login
# 退出登录
docker logout镜像操作
# 查看本地镜像
docker images
# 拉取镜像(指定标签)
docker pull ubuntu:13.10
# 搜索镜像
docker search httpd
# 删除镜像
docker rmi <镜像ID或名称>容器操作
容器生命周期
# 启动交互式容器
docker run -it ubuntu /bin/bash
# 启动已停止的容器
docker start <容器ID或名称>
# 启动后台容器
docker run -itd --name ubuntu-test ubuntu /bin/bash
# 进入运行中的容器
docker exec -it <容器ID> /bin/bash
# 停止容器
docker stop <容器ID>
# 重启容器
docker restart <容器ID>
# 强制删除容器
docker rm -f <容器ID>
# 查看所有容器(含已停止)
docker ps -a容器导入导出
# 导出容器为 tar 文件
docker export <容器ID> > ubuntu.tar
# 从 tar 文件导入为镜像
cat /docker/ubuntu.tar | docker import - test/ubuntu:v1Web 应用部署
以官方示例 Web 应用为例:
# 拉取示例应用
docker pull training/webapp
# 后台运行并映射端口
docker run -d -P training/webapp python app.py
# 查看端口映射
docker port <容器ID>
# 查看应用日志
docker logs -f <容器ID>
# 查看容器进程
docker top <容器ID>
# 查看容器详细信息
docker inspect <容器ID>常用参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
-d | 后台运行 | docker run -d nginx |
-p | 端口映射 | -p 8080:80 |
-v | 目录挂载 | -v /host:/container |
--name | 指定容器名称 | --name my-nginx |
--restart=always | 自动重启 | 容器退出时自动重启 |
--privileged=true | 管理员权限 | 获取宿主机 root 权限 |
镜像源配置
国内网络环境下,配置镜像加速可显著提升拉取速度。
# 编辑配置文件
sudo vim /etc/docker/daemon.json写入以下内容:
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://3laho3y3.mirror.aliyuncs.com",
"http://f1361db2.m.daocloud.io",
"https://mirror.ccs.tencentyun.com"
]
}重载配置并重启:
sudo systemctl daemon-reload
sudo systemctl restart docker文件拷贝
在宿主机与容器间拷贝文件:
# 从容器拷贝到宿主机
docker cp <容器ID>:/容器路径 /宿主机路径
# 从宿主机拷贝到容器
docker cp /宿主机路径 <容器ID>:/容器路径Docker Compose
Docker Compose 是定义和运行多容器应用的工具,通过 YAML 文件配置服务。
安装
# Linux 独立安装
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
# 或使用 Docker 插件形式(Docker Compose V2)
docker compose version常用命令
# 启动服务(后台运行)
docker-compose up -d
# 启动并重新构建
docker-compose up -d --build
# 停止服务
docker-compose down
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 重启服务
docker-compose restart常用软件部署
Tomcat
docker-compose.yml:
version: '3.8'
services:
tomcat:
image: tomcat:latest
container_name: tomcat
ports:
- "8080:8080"
restart: alwaysSFTP
docker-compose.yml:
version: '3.8'
services:
sftp:
image: atmoz/sftp
container_name: mysftp
ports:
- "2222:22"
volumes:
- /host/upload:/home/parallels/upload
command: parallels:jc19940116:::upload
restart: alwaysNginx
docker-compose.yml:
version: '3.8'
services:
nginx:
image: nginx:latest
container_name: wings-nginx
privileged: true
ports:
- "80:80"
- "443:443"
volumes:
- /home/static_blog/static_blog/:/home/static_blog/static_blog/
- /home/program/nginx/ssl/:/etc/nginx/ssl/:rw
- /home/program/nginx/nginx.conf:/etc/nginx/nginx.conf
- /home/program/nginx/log:/var/log/nginx
restart: alwaysRedis
docker-compose.yml:
version: '3.8'
services:
redis:
image: redis:latest
container_name: wings-redis
privileged: true
ports:
- "6379:6379"
volumes:
- /Users/jinchen/docker/redis/conf/redis.conf:/etc/redis/redis.conf
- /Users/jinchen/docker/redis/data:/data
command: redis-server /etc/redis/redis.conf
restart: alwaysMySQL
docker-compose.yml:
version: '3.8'
services:
mariadb:
image: mariadb:latest
container_name: mariadb
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root # 你的强密码
MYSQL_DATABASE: zenyou # 可选,创建一个初始数据库
MYSQL_USER: jinchenj # 可选,创建一个普通用户
MYSQL_PASSWORD:
volumes:
- /vol1/1000/docker/mariadb/data:/var/lib/mysqlPostgreSQL
docker-compose.yml:
version: '3.8'
services:
postgres:
image: postgres:16
container_name: postgres
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: your_password # 你的强密码
POSTGRES_DB: app_db # 可选,创建初始数据库
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- /vol1/1000/docker/postgresql/data:/var/lib/postgresql/data目录结构:
/vol1/1000/docker/
├── mariadb/
│ ├── data/ ← 数据文件
│ ├── conf/ ← 配置文件
│ └── backup/ ← 备份文件
├── postgresql/
│ └── data/ ← 数据文件
└── .../ ← 其他项目Zookeeper
docker-compose.yml:
version: '3.8'
services:
zookeeper:
image: zookeeper:latest
container_name: wings-zookeeper
privileged: true
ports:
- "2181:2181"
restart: alwaysOracle XE 11g
docker-compose.yml:
version: '3.8'
services:
oracle:
image: oracleinanutshell/oracle-xe-11g:latest
container_name: wings-oracle11g
privileged: true
ports:
- "32770:22"
- "32768:8080"
- "1521:1521"
restart: always进入容器:
docker exec -it wings-oracle11g /bin/bash
apt-get update && apt-get install vim创建新实例
# 进入实例目录
cd $ORACLE_HOME/dbs
export ORACLE_SID=H3BPM创建参数文件 initH3BPM.ora:
mkdir -p $ORACLE_BASE/admin/H3BPM/{a,b,c,u}dump参数文件内容:
audit_file_dest='/u01/app/oracle/admin/H3BPM/adump'
background_dump_dest='/u01/app/oracle/admin/H3BPM/bdump'
compatible='11.2.0.0.0'
core_dump_dest='/u01/app/oracle/admin/H3BPM/cdump'
db_name='H3BPM'
sga_target=600M
user_dump_dest='/u01/app/oracle/admin/H3BPM/udump'用户管理
# 切换到 oracle 用户
su oracle
# 进入 SQL*Plus
sqlplus /nolog
conn /as sysdba
# 修改系统用户密码
alter user system identified by system;
alter user sys identified by system;
# 创建新用户
create user h3bpm identified by h3bpm;
grant connect,resource to h3bpm;
# 设置密码永不过期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
# 关闭/启动数据库
shutdown immediate;
startup;
# 查看实例信息
show parameter name;总结
- Docker 命令遵循
docker <对象> <动作>的统一格式 - 使用
-v挂载配置和数据目录,实现数据持久化 - 生产环境建议配置
--restart=always确保服务自动恢复 - 国内环境配置镜像加速可大幅提升拉取速度
- 推荐使用 Docker Compose:配置即代码、版本化管理、一键启停、易于迁移
