[root@localhost ~]# docker version
Client: Docker Engine - Community
Version: 19.03.13
API version: 1.40
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:03:45 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.13
API version: 1.40 (minimum version 1.12)
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:02:21 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.3.7
GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
[root@localhost ~]# docker inspect 7e4d58f0e5f3
[root@localhost ~]# docker inspect nginx
查看tomcat的镜像文件
[root@localhost ~]# docker search tomcat
NAME'名称' DESCRIPTION'镜像描述' STARS'下载次数' OFFICIAL'官方源' AUTOMATED'自动'
tomcat Apache Tomcat is an open source implementati… 2831 [OK]
tomee Apache TomEE is an all-Apache Java EE certif… 83 [OK]
NAME # 镜像仓库
DESCRIPTION # 镜像描述信息
STARS # 镜像收藏数
OFFICIAL # 是否为docker官方发布的镜像
AUTOMATED # 是否为自动化构建的镜像,关于自动化构建,可以查看官方文档:https://docs.docker.com/docker-hub/builds/#how-automated-builds-work
从镜像仓库内下载nginx
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
d121f8d1c412: Pull complete
ebd81fc8c071: Pull complete
655316c160af: Pull complete
d15953c0e0f8: Pull complete
2ee525c5c3cc: Pull complete
Digest: sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
docker push docker push name[:tag “o”>] docker push laozhu/nginx:latest
将镜像推送至远程仓库,默认为 Docker Hub 。
-a 列出所有镜像(含过程镜像); -f 过滤镜像,如: -f [‘dangling=true’] 只列出满足 dangling=true 条件的镜像; –no-trunc 可显示完整的镜像ID; -q 仅列出镜像ID。 –tree 以树状结构列出镜像的所有提交历史。
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 7e4d58f0e5f3 8 days ago 133MB
REPOSITORY 名称
TAG 标记 后期要进行镜像上传的时候要用到
IMAGE ID 镜像ID
CREATED 镜像创建日期
[root@localhost ~]# docker images -q
7e4d58f0e5f3
7e6257c9f8d8
-a 列出所有容器(含沉睡镜像);
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1b2ef7c2386 centos:7 "/bin/bash -c 'while…" 10 hours ago Up 10 hours trusting_grothendieck
e342d2c1784b nginx:latest "/docker-entrypoint.…" 10 hours ago Up 10 hours 80/tcp clever_jang
49dc91b17af6 nginx "/docker-entrypoint.…" 15 hours ago Exited (0) 15 hours ago nginx-test
–before=“nginx” 列出在某一容器之前创建的容器,接受容器名称和ID作为参数;
–since=“nginx” 列出在某一容器之后创建的容器,接受容器名称和ID作为参数;
-f [exited=] 列出满足 exited= 条件的容器;
-l 仅列出最新创建的一个容器;
[root@localhost ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1b2ef7c2386 centos:7 "/bin/bash -c 'while…" 10 hours ago Up 10 hours trusting_grothendieck
–no-trunc 显示完整的容器ID;
[root@localhost ~]# docker ps --no-trunc
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1b2ef7c23869261a2ef15be13dcfef37108c3020107eda2260a2c81117cfc3d centos:7 "/bin/bash -c 'while true;do echo hello;done'" 10 hours ago Up 10 hours trusting_grothendieck
e342d2c1784b1ed13738344f4e82cdf8f77170a7fe30827cd55921b401385b36 nginx:latest "/docker-entrypoint.sh /bin/bash" 10 hours ago Up 10 hours 80/tcp clever_jang
-n=4 列出最近创建的4个容器;
[root@localhost ~]# docker ps -n 2
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1b2ef7c2386 centos:7 "/bin/bash -c 'while…" 10 hours ago Up 10 hours trusting_grothendieck
e342d2c1784b nginx:latest "/docker-entrypoint.…" 10 hours ago Up 10 hours 80/tcp clever_jang
-q 仅列出容器ID;
[root@localhost ~]# docker ps -q
c1b2ef7c2386
e342d2c1784b
-s 显示容器大小。
[root@localhost ~]# docker ps -s
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
c1b2ef7c2386 centos:7 "/bin/bash -c 'while…" 10 hours ago Up 10 hours trusting_grothendieck 0B (virtual 203MB)
e342d2c1784b nginx:latest "/docker-entrypoint.…" 10 hours ago Up 10 hours 80/tcp clever_jang 17B (virtual 133MB)
-f 覆盖已有标记。
相当于增加一个标签(硬链接) 不是修改, 后期上传到仓库 要进行更改成指定的标签格式
[root@localhost ~]# docker tag nginx:latest nginx:web
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 7e4d58f0e5f3 8 days ago 133MB
nginx web 7e4d58f0e5f3 8 days ago
从本地移除一个或多个指定的镜像。
-f 强行移除该镜像,即使其正被使用;
–no-prune 不移除该镜像的过程镜像,默认移除。
-l : 移除容器间的网络连接,而非容器本身
-v : 删除与容器关联的卷
删除标签的两种方式以及区别 docker rmi + id 当存在两个相同id的时候不能使用id号来删除 docker rmi + 镜像名称:标签 删除指定标签的镜像 可以是多个id相同的标签 如下所示
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 7e4d58f0e5f3 8 days ago 133MB
nginx web 7e4d58f0e5f3 8 days ago 133MB
[root@localhost ~]# docker rmi 7e4d58f0e5f3
Error response from daemon: conflict: unable to delete 7e4d58f0e5f3 (cannot be forced) - image is being used by running container 49dc91b17af6
[root@localhost ~]# docker rmi nginx:web
Untagged: nginx:web
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 7e4d58f0e5f3 8 days ago
此时报错的原因是我之前已经将容器的nginx服务跑起来了 此处想要删除必须加-f
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 7e4d58f0e5f3 8 days ago 133MB
[root@localhost ~]# docker rmi 7e4d58f0e5f3
Error response from daemon: conflict: unable to delete 7e4d58f0e5f3 (cannot be forced) - image is being used by running container 49dc91b17af6
–no-trunc 显示完整的提交记录;
[root@localhost ~]# docker history 7e4d58f0e5f3
IMAGE CREATED CREATED BY SIZE COMMENT
7e4d58f0e5f3 9 days ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B
<missing> 9 days ago /bin/sh -c #(nop) STOPSIGNAL SIGTERM 0B
<missing> 9 days ago /bin/sh -c #(nop) EXPOSE 80 0B
<missing> 9 days ago /bin/sh -c #(nop) ENTRYPOINT ["/docker-entr… 0B
<missing> 9 days ago /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7… 1.04kB
<missing> 9 days ago /bin/sh -c #(nop) COPY file:1d0a4127e78a26c1… 1.96kB
<missing> 9 days ago /bin/sh -c #(nop) COPY file:e7e183879c35719c… 1.2kB
<missing> 9 days ago /bin/sh -c set -x && addgroup --system -… 63.4MB
<missing> 9 days ago /bin/sh -c #(nop) ENV PKG_RELEASE=1~buster 0B
<missing> 9 days ago /bin/sh -c #(nop) ENV NJS_VERSION=0.4.3 0B
<missing> 9 days ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.19.2 0B
<missing> 9 days ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B
<missing> 10 days ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 10 days ago /bin/sh -c #(nop) ADD file:e7407f2294ad23634… 69.2MB
-q 仅列出提交记录ID。
[root@localhost ~]# docker history 7e4d58f0e5f3 -q
7e4d58f0e5f3
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
//-i:让容器的标准输入保持打开
//-t:让docker分配一个伪终端
[root@localhost opt]# docker create -it nginx:latest
4e697390f6d1e4711e69e2bdfa3771331ba99e598b89badf7e6319c0e497d11b
[root@localhost opt]# docker save -o /opt/nginx01 nginx:latest
[root@localhost opt]# ls /opt
containerd docker.sh nginx01 rh
[root@localhost opt]# docker load < /opt/nginx01
Loaded image: nginx:latest
[root@localhost opt]# docker load --input /opt/nginx01
Loaded image: nginx:latest
将指定镜像保存成 tar 归档文件, docker load 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。
-o “debian.tar” 指定保存的镜像归档。
docker unpause docker unpause 恢复某一容器的所有进程。
docker start|stop “p”>|restart [options “o”>] “o”>[container…]
启动、停止和重启一个或多个指定容器。
[root@localhost opt]# docker start 4e697390f6d1
-a 待完成
-i 启动一个容器并进入交互模式;
-t 10 停止或者重启容器的超时时间(秒),超时后系统将杀死进程。
启动一个容器,在其中运行指定命令。
-a stdin 指定标准输入输出内容类型,可选 STDIN/ STDOUT / STDERR 三项;
-d 后台运行容器,并返回容器ID;
-i 以交互模式运行容器,通常与 -t 同时使用;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=“nginx-lb” 为容器指定一个名称;
–dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致;
–dns-search example.com 指定容器DNS搜索域名,默认和宿主一致;
-h “mars” 指定容器的hostname;
-e username=“ritchie” 设置环境变量;
–env-file=[] 从指定文件读入环境变量;
–cpuset=“0-2” or --cpuset=“0,1,2” 绑定容器到指定CPU运行;
-c 待完成
-m 待完成
–net=“bridge” 指定容器的网络连接类型,支持 bridge / host / none container:<name|id> 四种类型;
–link=[] 待完成
–expose=[] 待完成
使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash
root@b8573233d675:/#
'-d 后台运行 -p端口映射 前面那的是真机的端口 绑定到docker的82端口'
[root@localhost opt]# docker run -d -p 82:80 nginx
删除容器(先停止容器在删除):docker rm 容器id
[root@docker ~]# docker rm 4aeeecce12fd
4aeeecce12fd
[root@docker ~]# docker ps -a
'//-i:让容器的标准输入保持打开'
'//-t:让docker分配一个伪终端'
[root@localhost opt]# docker exec -it 4e697390f6d1 /bin/bash '进入容器 创建新的终端'
root@4e697390f6d1:/# ls
bin docker-entrypoint.d home media proc sbin tmp
boot docker-entrypoint.sh lib mnt root srv usr
dev etc lib64 opt run sys var
root@4e697390f6d1:/etc# exit
exit
[root@localhost opt]# docker attach 4e '直接进入当前运行的容器 不创建新的终端'
ls
[root@localhost opt]# docker commit 35 web2
sha256:2051861483e6dd430987444df96a16100e3f5b071f797a0b03311dd7939ce167
[root@localhost opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
web2 latest 2051861483e6 42 seconds ago 133MB
nginx latest 7e4d58f0e5f3 9 days ago 133MB
docker ps -a |awk '{print "docker rm "$1}'