docker常用命令
- 帮助类启动类命令
- 启动docker ——systemctl start docker
- 停止docker ——systemctl stop docker
- 重启docker ——systemctl restart docker
- 查看docker状态 ——systemctl status docker
- 开机启动docker ——systemctl enable docker
- 查看docker命令帮助文档——docker 具体命令 –help
- 镜像命令
- 列出本地主机的镜像:docker images -a列出所有的镜像(包含历史镜像层)
- 查找某个镜像:docker search 某个XXX镜像名字
- 下载某个镜像:docker pull 某个XXX镜像名字
- 查看镜像/容器/数据卷所占的空间:docker system df
- 删除镜像:
- 删除单个:docker rmi -f <�容器 id>
- 删除多个:docker rmi -f 镜像名1:tag 镜像名2:tag
- 删除全部:docker rmi -f $(docker images -qa)
面试题:docker的虚悬镜像是什么?
仓库名、标签都是的镜像,俗称虚悬镜像dangling image
- 容器命令
- 列举所有的容器:docker ps
- 启动已停止运行的容器:docker start 容器id或者容器自定义名
- 停止容器:docker stop <�容器 id>
- 重启容器:docker restart <�容器 id>
- 退出容器两种方式:
- exit退出,容器停止
- ctrl+p+q退出,容器不停止
- 删除容器:docker rm <�容器 id>
- 强制一次删除多个容器实例:
- docker rm -f $(docker ps -a -q)
- docker ps -a -q | xargs docker rm
- 查看docker容器日志:docker logs <�容器 id>
- 启动的案例:
- 前台交互启动:docker run -it <�容器名或id>
- 后台守护启动:docker run -d <�容器名或id>
- 查看容器内部进程:docker top <�容器 id>
- (现在不常用)查看容器内部细节:docker inspect <�容器 id>
将容器转为镜像
docker commit 容器id 镜像名称:版本号
注:转为镜像后曾经挂载的目录会消失
将镜像转为压缩文件
docker save -o 压缩文件名称 镜像名称:版本号
将压缩文件解压回容器
docker load -i 压缩文件名称
Dockerfile编写案例
- 启动案例:
- 启动一个Nginx:docker run -d –name nginx -p 80:80 nginx:latest
- 从镜像导出tar包:docker save -o images/nginx_webapp_1.0.0.tar nginx_webapp:1.0.0
把tar包导入成镜像 - docker load [options]
- 接下来我们导入刚才上传的镜像。
- docker load -i dockerdemo.tar
- 若是只想备份images,使用save、load即可
- 若是在启动容器后,容器内容有变化,需要备份,则使用export、import
root@ubuntu:/lzc/dockerumages# docker run -d -it -p 9506:3306 –name=’mysql8′ ad3783848857 /bin/bash
9b5941bd7cc0aa5c9fcab756be8a9b72bd798e1ff5490fd246e1cab44a628828
root@ubuntu:/lzc/dockerumages# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9b5941bd7cc0 ad3783848857 "/bin/bash" 13 seconds ago Up 11 seconds 0.0.0.0:9506->3306/tcp, :::9506->3306/tcp mysql8
root@ubuntu:/lzc/dockerumages# - 进入正在运行的容器并用命令行交互:
- docker exec -it 容器ID /bin/bash #(推荐使用)
- 启动一个远程Shell:docker exec -it –name="自定义名称" <�容器 id> /bin/bash
- docker attach 容器ID
- 上上述两个的区别:
- attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止。
- exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止。
- 从容器拷贝资料到主机:
- dockercp容器ID:/容器内路径 /目的主机路径
- 案例:docker cp 29b55e52a907:/tmp/lzc.txt /liuzc/
[root@VM-4-11-centos ~]# docker cp 29b55e52a907:/tmp/lzc.txt /liuzc/ [root@VM-4-11-centos ~]# cd /liuzc [root@VM-4-11-centos liuzc]# ll total 24 -rw-r–r– 1 root root 0 Aug 4 00:23 lzc.txt -rw——- 1 root root 40 Jul 26 10:19 nohup.out drwxr-xr-x 2 root root 4096 Jul 7 23:18 project drwxr-xr-x 2 root root 4096 Jul 26 22:33 text -rw-r–r– 1 root root 116 Jul 26 10:17 text.sh drwxr-xr-x 3 root root 4096 Jul 17 15:15 vue_api_server -rw-r–r– 1 root root 300 Jul 26 10:23 xiazai.sh [root@VM-4-11-centos liuzc]#- 导出导入容器到主机
- export导出容器的内容留作为–个tar归档文件[对应import命令]
- import从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
案例: - 容器导出主机:docker export 容器id > 自定义文件名.tar
- 从主机备份的镜像导入:cat 文件名.tar | docker import-镜像用户/镜像名:镜像版本号
导入的案例:cat liuubuntu.tar | docker import – xiaoliu/ubuntu:3.7
[root@VM-4-11-centos liuzc]# cat liuubuntu.tar | docker import – xiaoliu/ubuntu:3.7
sha256:a81903cff14effbfe29738c31c613ba5b784e6b879a8585e5cfa7d9d843cb274
[root@VM-4-11-centos liuzc]#
[root@VM-4-11-centos liuzc]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaoliu/ubuntu 3.7 a81903cff14e About a minute ago 77.8MB
redis latest 3e42dd4e79c7 28 hours ago 117MB
nginx latest b692a91e4e15 35 hours ago 142MB
ubuntu latest df5de72bdb3b 39 hours ago 77.8MB
[root@VM-4-11-centos liuzc]#
再运行导入的镜像文件,查看和之前的一样的文件都在。
[root@VM-4-11-centos liuzc]# docker run -it a81903cff14e /bin/bash
root@c26d29bfec50:/# cd /tmp/;ls
lzc.txt
root@c26d29bfec50:/tmp#
- docker镜像commit操作案例;
在ubuntu容器中安装vim
先更新我们的包管理系统:apt-get update
然后在安装我们需要的vim:apt-get -y install vim- docker commit提交容器副本使之成为一个新的镜像
- docker commit -m="提交的描述信息" -a="作者"容器ID要创建的目标镜像名:[标签名]
[root@VM-4-11-centos ~]# docker commit -m="vim cmd add ok" -a="liuzc" 237917e83775 atlzc/myubuntu:1.2
sha256:b384d6e50925b9814043a1d7c3c48c44a38ab56adbbbd1409735abc23626f571
[root@VM-4-11-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
atlzc/myubuntu 1.2 b384d6e50925 10 seconds ago 173MB
xiaoliu/ubuntu 3.7 a81903cff14e 24 hours ago 77.8MB
redis latest 3e42dd4e79c7 2 days ago 117MB
nginx latest b692a91e4e15 2 days ago 142MB
ubuntu latest df5de72bdb3b 2 days ago 77.8MB
[root@VM-4-11-centos ~]#
- docker本地镜像推送到腾讯云
- 登录腾讯云容器镜像服务 Docker Registry
- docker login ccr.ccs.tencentyun.com –username=100021607864
- 从 Registry 拉取镜像
- docker pull ccr.ccs.tencentyun.com/atlzc/mylzc:[tag]
- 向 Registry 中推送镜像
- docker tag [imageId] ccr.ccs.tencentyun.com/atlzc/mylzc:[tag]
- docker push ccr.ccs.tencentyun.com/atlzc/mylzc:[tag]
案例: - 登录腾讯云容器镜像服务
- [root@VM-4-11-centos ~]# docker login ccr.ccs.tencentyun.com –username=100021607864
- 从 Registry 拉取镜像
- [root@VM-4-11-centos ~]# docker pull ccr.ccs.tencentyun.com/atlzc/mylzc:1.2
- 向 Registry 中推送镜像
- [root@VM-4-11-centos ~]# docker tag b384d6e50925 ccr.ccs.tencentyun.com/atlzc/mylzc:1.2
- [root@VM-4-11-centos ~]# docker push ccr.ccs.tencentyun.com/atlzc/mylzc:1.2
- docker本地镜像推送到私有库
- 下载私有库:docker pull registry
- 运行本地私有库registry,相当于本地有个私有docker hub,运行命令:
- docker run -d -p 5000:5000 -v /zzyyuse/myregistryl/:/tmp/registry –privileged=true registry
默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调 - 容器ubuntu安装ifconfig命令:apt-get install net-tools
- 制成新的镜像:docker commit -m="ifconfig cmd add ok" -a="atlzc" 0772accd60e4 lzcubuntu:1.3
[root@VM-4-11-centos ~]# docker commit -m="ifconfig cmd add ok" -a="atlzc" 0772accd60e4 lzcubuntu:1.3
[root@VM-4-11-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
lzcubuntu 1.3 eb59051a2894 8 seconds ago 174MB
ccr.ccs.tencentyun.com/atlzc/mylzc 1.2 b384d6e50925 2 days ago 173MB
xiaoliu/ubuntu 3.7 a81903cff14e 3 days ago 77.8MB
redis latest 3e42dd4e79c7 5 days ago 117MB
nginx latest b692a91e4e15 5 days ago 142MB
ubuntu latest df5de72bdb3b 5 days ago 77.8MB
registry latest d1fe2eaf6101 2 weeks ago 24.1MB
[root@VM-4-11-centos ~]#
-
将新镜像lzcubuntu1.3修改符合私服规范的Tag
- 按照公式:docker tag 镜像:Tag Host:Port/Repository:Tag
- 自己host主机IP地址,填写同学你们自己的,不要粘贴错误
- 案例:
- docker tag lzcubuntu:1.3 110.42.144.210:5000/lzcubuntu:1.3
-
修改配置使得支持http
- cat /etc/docker/ daemon. j son
- 往里面添加这个:" insecure- registries": [ " 110.42.144.210: 5000"]
-
上述理由: docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。====>修改完后如果不生效,建议重启docker
-
dockerfile制作新的镜像
FROM # 基础镜像
MAINTAINER # 镜像是谁写的, 姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被覆盖。
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
COPY # 只将宿主机文件拷贝到镜像中
ADD # 拷贝加解压缩
WORKDIR # 镜像的工作目录(刚进入容器,进入的目录)
VOLUME # 挂载的目录
EXPOSE # 暴露端口配置(对外发布的端口)
ONBUILD # 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD的指令,触发指令。
ENV # 构建的时候设置环境变量(定义一个变量,在后面可以多次复用)
原文链接:https://blog.csdn.net/Friendsofthewind/article/details/122004619