01. 安装 Docker
- curl -sSL https://get.docker.com/ | sh
- centos6 epel
- yum install -y docker-io
- CentOS 7
- yum install -y docker-engine
- service docker start
- service docker stop
- service docker restart
02. 查看 Docker 信息
docker info
文件位置 /var/lib/docker
03. 查找镜像
官方网站查找 https://hub.docker.com/
docker search CentOS(镜像名称)
--automated 自动化选项
--no-trunc 显示完全 ID
-s 最低星级 25 个结果
04. 查看 3 星级的镜像
docker search -s 3 CentOS
05. 拉取镜像
docker pull < 镜像名称 >:< 标签 >
docker pull CentOS
-a 所有镜像
docker daemon 启动参数 "--insecure-registry=0.0.0.0/0"
06. 使用自定义镜像站点修改
- /etc/default/docker
- DOCKER_OPTS="--REGISTRY-MIRROR=https://www.daocloud.io"
docker daemon 启动参数 "--insecure-registry=0.0.0.0/0"
07. 列出镜像
docker images
-a 显示所有镜像
-f 过滤条件
-no-trunc 显示完全 ID
-q 唯一 ID
08. 使用 run 创建容器
docker run < 选项 >< 镜像名称 >< 要运行的文件 >
- docker run -dti -p 80:80 -v /root/data:/data hello:1.0 --name hello-nginx
- docker run -d -p 8000:8000 --restart=always --name ngng -v /data/registry:/var/lib/registry registry:2
后台运行容器 容器端口: 宿主机端口 容器异常重新启动 启动容器名称 位置映射, 宿主机位置: 容器位置 镜像名称或者 ID
-d 后台运行
-i(interactive),-t(Pseudo-tty) 运行 Bash shell 中进行输入输出
--name 指定容器名称, 若不指定则自动生成
-p 主机端口与容器端口连接, 并暴露到外部
-v 主机 / root/data 目录连接到容器的 / data 目录
09. 查看容器列表
docker ps
-a 显示所有的容器
10. 使用 start 命令启动容器
docker start < 容器名称 > 或 容器 ID
docker start hello
11. 重启容器
docker restart < 容器名称 > 或 容器 ID
docker restart hello
12. 使用 attach 命令连接容器
docker attach < 容器名称 > 或 容器 ID
docker attach hello(NAMES)
注意:
在 Bash shell 中输入 Ctrl + D 或者 exit, 表示停止并退出 docker 容器.
若依次输入 Ctrl + P,Ctrl + Q, 则不会终止容器而只是推出.
13. 使用 exec 命令从外部运行容器内的命令
docker exec < 容器名称 >< 命令 >< 形式参数 >
docker exec -ti 容器 ID
docker exec registry ip add
14. 停止容器
docker stop < 容器名称 > 或 容器 ID
- docker ps
- docker stop hello
15. 删除容器
docker rm < 容器名称 > 或 容器 ID
- docker rm hello
- docker ps -a
16. 删除镜像
docker rmi < 镜像名称 >:< 标签 > 或 容器 ID
docker rmi hello
-f 强制删除
--no-trunc 删除没有标签的
- # 删除所有镜像
- docker rmi $(docker images -qa)
17. 使用 build 命令创建镜像
docker build < 选项 ><Dockerfile 路径 >
docker build --tag hello:1.0
18. 使用 cp 复制文件
docker cp < 容器名称 >:< 路径 > < 主机路径 >
- docker cp 2e52e426f849:/etc/hosts ./
- docker cp fervent_lumiere:/etc/host.conf /opt/
19. 使用 history 命令查看镜像历史
docker history < 镜像名称 >:< 标签 > 或 容器 ID
- docker history hello:1.0
- docker history tobegit3hub/seagull:latest
20. 从容器的修改中创建镜像 commit
docker commit < 选项 > < 容器名称 > < 镜像名称 >:< 标签 >
docker commit -a "chengfeng <[email protected]>" -m "add hello.txt" fervent_lumiere tobegit3hub/seagull:latest
21. 使用 diff 命令检查容器文件的修改
docker diff < 容器名称 > 或 容器 ID
docker diff hello-nginx
A 为添加的文件
C 为修改的文件
D 为删除的文件
22. 命令查看 inspect 详细信息
docker inspect < 镜像或者容器名称 >
docker inspect hello-nginx
23. 拉取镜像到本地
docker tag < 镜像名称 >:< 标签 > <Docker registry URL>/< 镜像名称 >:< 标签 >
- docker tag hello:1.0 localhost:5000/hello:1.0
- docker pull registry:latest
- docker run -d -p 5000:5000 --name hello-registry -v /tmp/registry:/tmp/registry registry
运行后, 镜像文件存储到主机的 / tmp/registry 目录.
24. 推送镜像
docker push <Docker registry URL>/< 镜像名称 >:< 标签 >
docker push localhost:5000/hello:1.0
25. 删除标签
docker rmi <Docker registry URL>/< 镜像名称 >:< 标签 >
docker rmi dev.dockcloud.cn/busybox:0.1
26. 查看日志
docker logs < 容器名称或 ID>
27. 查看运行状态
docker stats < 容器名称或 ID>
28. 查看 top
docker top < 容器名称或 ID>
29. 查看映射端口
docker port < 容器名称或 ID>
30. 更新容器信息
docker update < 容器名称或 ID>
31. 保存容器成 tar 文件
docker export < 容器名称或 ID>
32. 将 tar 文件导入到镜像列表
docker import < 容器名称或 ID>
33. 把容器保存成镜像
docker commit 运行中 docker ID
-a 添加作者
-m 描述
34. 将镜像保存成 tar 文件
docker save 镜像 ID
- # 保存镜像 id
- docker tag 56d3dc08212d registry.chinadaas.com/pubilc/Elasticsearch:6.3.0
- # 保存标签
- docker save -o elastic.tar.gz registry.chinadaas.com/pubilc/Elasticsearch:6.3.0
35. 加载 tar 镜像文件
docker load 镜像 ID
36. 外挂卷 volumes
- docker run -dti -v /web-data:/tmp:ro --name data-container App
- docker run -dti --volumes-from data-container --name Web-container apps
- docker run -dti --volumes-from data-container --name web2-container apps
- # -v 宿主机目录: 容器目录
37. 容器卷管理
容器卷 主机卷
docker 镜像
通过 docker build -t . 执行 dockerfile 文件制作
- FROM CentOS:7
- RUN yum install -y epel-release && yum install -y nginx && yum clean all
- EXPOSE 80 443
- CMD ["nginx", "-g", "daemon off;"]
容器卷
- FROM CentOS:7
- RUN yum install -y epel-release && yum install -y nginx && yum clean all
- EXPOSE 80 443
- VOLUME ["/usr/share/nginx/html"]
- CMD ["nginx", "-g", "daemon off;"]
删除带容器卷的容器
docker rm -f -v 容器 ID
38. 一次性删除所有的容器
docker rm $(docker ps -q -a)
39. 一次性删除所有的镜像
docker rmi $(docker images -q)
40. 删除停止的容器
docker rm $(docker ps -a -q -f status=exited)
41. 删除没有标签的镜像
docker rmi -f $(docker images |grep "<none>" | awk "{print \$3}")
42. 配置 docker-enter 管理 docker 容器
在环境变量内添加
- cat>> /root/.bashrc << EOF
- # set docker-enter
- alias docker-pid="sudo docker inspect --format'{{.State.Pid}}'"alias docker-ip="sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}'"
- function docker-enter() {
- if cpid=`docker-pid $1`;then
- sudo nsenter --target $cpid --mount --uts --ipc --net --pid
- fi
- }
- EOF
- source /root/.bashrc
43. 主机卷
- docker run -dti -p 80:80 --name App -v /Web-data:/tmp App
- docker run -dit -p 8080:80 --name apps -v /Web-data:/tmp apps
44. 备份数据
docker run --rm --volumes-from dbdata -v $(pwd):/backup CentOS tar cvf /backup/backup.tar /dbdata
45. 数据恢复
docker run --rm --volumes-from dbdata2 -v $(pwd):/backup CentOS bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"
46.container-none 网络模式
- docker run -dit --name busybox1 busybox:latest
- docker run -dti --name busybox2 --net=container:busybox1 busybox sh
47. 连接容器
- docker run -dti --name db mongo
- docker run -dit --name Web -p 80:80 --link db:db nginx
来源: http://www.bubuko.com/infodetail-3112733.html