本文用到的符号说明:
<container> 容器名,形如 tiangolo/nginx-rtmp 或 nginx 等 <img> 镜像名,形如 ubuntu:16.04 或 ubuntu 等 <container_id> 容器 id,形如 8648e373168c <img_id> 镜像 id,形如 52b18ed2d4bf <tag> 镜像标签,形如 0.2, 0.3 1. 容器 1.1 查看容器查看当前处于运行状态的容器:
docker ps查看所有容器:
docker ps -a 1.2 启动/停止容器 docker start <container> docker stop <container> docker start ffmpeg-centos-0.2 docker stop ffmpeg-centos-0.2 1.3 创建容器语法:
docker run [OPTIONS] <img> [COMMAND] [ARG...] -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项; -d: 后台运行容器,并返回容器ID; -i: 以交互模式运行容器,通常与 -t 同时使用; -p: 端口映射,格式为:主机(宿主)端口:容器端口 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用; -h: 容器里的主机名(hostname) --name="<container>": 为容器指定一个名称;实例:
基于镜像创建容器,容器在前台运行,在容器中执行 exit 后容器将变为停止状态:
docker run -it --name <container> <img> bash docker run -it --name <container> <img>:<tag> bash docker run -it --name ffmpeg-centos-0.2 ffmpeg-centos:0.2 bash基于镜像创建容器,容器在后台运行,在容器中执行 exit 后容器仍处于运行状态:
docker run -itd --name ffmpeg-centos-0.2 ffmpeg-centos:0.2 bash基于镜像创建容器,容器在前台运行,将宿主机上 /home/think/work 目录映射为容器中的 /work 目录:
docker run -it -v /home/frank/work:/work --name ffmpeg-centos-0.2 ffmpeg-centos:0.2 bash基于镜像创建容器,容器在前台运行,将宿主机上 60084 端口映射为容器中的 80 端口:
docker run -it -p 60084:80 --name ffmpeg-centos-0.2 ffmpeg-centos:0.2 bash 1.4 进入容器语法:
docker exec [OPTIONS] <container> COMMAND [ARG...] -d: 分离模式: 在后台运行 -i: 即使没有附加也保持 STDIN 打开 -t: 分配一个伪终端实例:
进入容器并打开容器中的 bash:
docker exec -it <container> bash docker exec -it ffmpeg-centos-0.2 bash进入容器后,在容器中执行 exit 将退出容器进入主机环境,但容器并不会停止。
如果加 -d 参数,无法进入容器中操作 bash,此命令执行完,仍在宿主机 bash 中。
docker exec -itd <container> bash所以 -d 参数目前看来没什么用,待研究。
1.5 查看容器信息查看容器信息,诸如 IP、映射目录等
docker inspect <container> docker inspect ffmpeg-centos-0.2 1.6 重命名容器 docker rename <container1> <container2> docker rename ffmpeg-centos-debug ffmpeg-centos-0.2 1.7 删除容器删除处于停止状态的容器
docker rm <container> docker rm ffmpeg-centos-0.2 2. 镜像 2.1 查看镜像 docker images 2.2 拉取镜像从 docker 的网络镜像仓库拉取镜像到本地:
docker pull <img> docker pull <img>:<tag> docker pull centos:7.2.1511 2.3 删除镜像 docker rmi <img> docker rmi ffmpeg-centos:0.2 2.4 重命名镜像 docker tag <img_id> <img>:<tag> docker tag 8648e373168c ffmpeg-centos:0.2 2.4 基于容器制作镜像 docker commit -m "comment" -a "author" <container> <img>:<tab> docker commit -m "comment" -a "author" <container_id> <img>:<tab> docker commit -m "2nd version" -a "frank" ffmpeg-centos-0.2 ffmpeg-centos:0.2 2.5 导出镜像 docker save <img>:<tag> | gzip > <xxx>.tar.gz docker save ffmpeg-centos:0.2 | gzip > docker-img-ffmpeg-centos-0.2.tar.gz 2.6 导入镜像 gunzip -c <xxx>.tar.gz | docker load gunzip -c docker-img-ffmpeg-centos-0.2.tar.gz | docker load 3. 设置 3.1 普通用户免 sudo 使用 docker输入以下命令,将当前用户添加到 docker 组,即可免 sudo 使用 docker:
sudo gpasswd -a ${USER} docker注意:上述命令行中的 ${USER} 将获取到当前用户名,当前用户是 frank,就是将 frank 添加到 docker 组,当前用户是 root,就是将 root 用户添加到 docker 组。当然也可手动指定用户名将其添加其到 docker 组,如当前用户是 root,运行 gpasswd -a frank docker 即可。
3.2 设置镜像加速docker镜像源位于美国,拉取镜像非常缓慢。可配置国内镜像源,加快镜像拉取速度。
修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值:
{ "registry-mirrors": [ "https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com", "https://mirror.ccs.tencentyun.com" ] }上述配置文件添加了四个国内镜像源:docker 中国、清华、163 和腾讯。
修改上述配置文件后重启docker服务:
systemctl restart docker 4. 进阶用法 4.1 将主机上普通用户映射进容器