前言
一:Docker的常规操作
1.1:下载镜像
-
默认都是使用公有仓库进行下载,在国内,我们需要进行镜像加速:
-
加速手册可参考我的博客:https://blog.csdn.net/CN_TangZheng/article/details/105398139
-
加速步骤:
[root@docker ]# tee /etc/docker/daemon.json <<-'EOF' > { > "registry-mirrors": ["https://yu1vx79j.mirror.aliyuncs.com"] > } > EOF [root@docker etc]# systemctl daemon-reload '//重载Docker守护进程' [root@docker etc]# systemctl restart docker '//重启Docker服务'
1.2:镜像常规操作
-
搜索镜像:
docker search 镜像名称
[root@docker etc]# docker search nginx
-
下载镜像:
docker pull 镜像名称
:(stars–星级:代表着镜像的使用率)[root@docker etc]# docker pull nginx
-
查看已有镜像:
docker images
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ed21b7a8aee9 8 days ago 127MB
-
查看镜像详细信息:
docker inspect 镜像ID
[root@docker ~]# docker inspect ed21b7a8aee9
-
镜像下载完存放在:
/var/lib/docker
,下载的文件信息:/var/lib/docker/image/overlay2/repositories.json
-
为镜像添加新标签:
docker tag 仓库名:原标签 仓库名:新标签
,标签添加完新旧标签是同时存在的[root@docker ~]# docker tag nginx:latest nginx:web [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ed21b7a8aee9 8 days ago 127MB nginx web ed21b7a8aee9 8 days ago 127MB
-
删除标签:
docker rmi 仓库名:标签
[root@docker ~]# docker rmi nginx:web Untagged: nginx:web [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ed21b7a8aee9 8 days ago 127MB
-
删除镜像:
docker rmi 镜像id
,删除镜像id后此镜像所有的标签都删除[root@docker ~]# docker rmi ed21b7a8aee9 Untagged: nginx:latest Untagged: nginx@sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596 Deleted: sha256:ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291 Deleted: sha256:8a305f371a6c3c445a1dfc500c1364743868a269ab8cdaf95902692e82168352 Deleted: sha256:d079ef06ec1f10a8050887365f9a940b39547ba6bcc46b16a463e740984f3223 Deleted: sha256:c3a984abe8a88059915bb6c7a1d249fd1ccc16d931334ac8816540b0eb686b45 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE [root@docker ~]# docker pull nginx '//再次重新下载一个镜像'
-
导出镜像(保存镜像)到相应目录:
docker save -o 相应目录 仓库名:标签
[root@docker ~]# docker save -o /opt/nginx001 nginx:latest [root@docker ~]# ls /opt containerd nginx001
-
导入镜像:
- 方法1、
docker load < 镜像
- 方法2、
docker load --input 镜像
[root@docker ~]# docker load < /opt/nginx001 '//方法一' Loaded image: nginx:latest [root@docker ~]# docker load --input /opt/nginx001 '//方法二' Loaded image: nginx:latest
- 方法1、
-
上传镜像:
[root@docker ~]# docker login --username=汤政大人 registry.cn-hangzhou.aliyuncs.com '//先登录' Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded [root@docker ~]# docker tag ed21b7a8aee9 registry.cn-hangzhou.aliyuncs.com/tang_docker001/tang_docker001:latest [root@docker ~]# docker push registry.cn-hangzhou.aliyuncs.com/tang_docker001/tang_docker001:latest '//开始上传' The push refers to repository [registry.cn-hangzhou.aliyuncs.com/tang_docker001/tang_docker001] d37eecb5b769: Pushed 99134ec7f247: Pushed c3a984abe8a8: Pushed latest: digest: sha256:7ac7819e1523911399b798309025935a9968b277d86d50e5255465d6592c0266 size: 948
1.3:容器常规操作
-
创建容器:
docker create -it 仓库名:标签 登录环境
[root@docker ~]# docker create -it nginx:latest /bin/bash 3bf2bde0e0b9fe91a643746d4e00e37e234487b9609ea083071831776aebf50a '//-i:让容器的标准输入保持打开' '//-t:让docker分配一个伪终端'
-
查看容器状态:
docker ps -a
[root@docker ~]# docker ps -a '//状态为created' CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3bf2bde0e0b9 nginx:latest "/bin/bash" 7 seconds ago Created wizardly_swanson '//-a:列出最近一次启动的容器'
-
启动容器:
docker start 容器id
[root@docker ~]# docker start 3bf2bde0e0b9 '//启动容器' 3bf2bde0e0b9 [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3bf2bde0e0b9 nginx:latest "/bin/bash" 3 minutes ago Up 1 second 80/tcp wizardly_swanson
-
登陆正在运行的容器:两个方法
- 方法一:
docker exec -it 容器id 环境
- 方法二:
docker run -it 容器名:标签 环境
[root@docker ~]# docker exec -it 36c6af332247 /bin/bash [root@36c6af332247 /]# ls '//可以输入命令' anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var [root@36c6af332247 /]# exit '//退出' exit [root@docker ~]# docker ps -a '//刚刚的容器依旧是up状态'
- 方法一:
-
停止容器:
docker stop 容器id
[root@docker ~]# docker stop 3bf2bde0e0b9
-
启动容器并执行命令(执行完自动退出):
docker run 镜像 环境 -c 命令(如果没哟镜像会自动下载)
[root@docker ~]# docker run centos:7 /usr/bin/bash -c ls / '//启动centos:7容器并执行ls命令' [root@docker ~]# docker ps -a '//发现此容器已经正常退出' '//此命令执行完成后会自动退出,释放资源,状态是exited(0)'
-
启动容器并执行命令(持续在后台运行):
[root@docker ~]# docker run -d centos:7 /bin/bash -c "while true;do echo hello;done" 6101ea6eedbf7a1dcc75bb9d7cc1eb94e83b343b6829b6546d6ceda318545df6 '//-c:命令'
-
容器导出:
[root@docker ~]# docker export 6101ea6eedbf > /opt/centos7
-
容器导入(会生成镜像,而不会创建容器):
[root@docker ~]# cat /opt/centos7 |docker import - centos7.1 sha256:59faa021c1f1d1a9c8f1f8800a0392c7a7796968b2b05868f27e6f8bf6e63ac6 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos7.1 latest 59faa021c1f1 5 seconds ago 203MB 。。。省略内容
-
删除容器(先停止容器在删除):
docker rm 容器id
[root@docker ~]# docker rm 4aeeecce12fd 4aeeecce12fd [root@docker ~]# docker ps -a
-
批量删除容器:
docker ps -a |awk '{print "docker rm "$1}'|bash
[root@docker ~]# docker ps -a |awk '{print "docker rm "$1}'|bash '//'