#常用命令

##1、进入容器内部

####查看容器ID

docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0607d754d3f0 docker.io/jenkins/jenkins:2.194 “/sbin/tini — /us…” 22 minutes ago Up 5 minutes 0.0.0.0:50000->50000/tcp, 0.0.0.0:3080->8080/tcp x201i_jenkins

####进入容器

docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数。

只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。
当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

  1. [pi@x201i ~]$ docker exec -it 0607 bash
  2. jenkins@0607d754d3f0:/$

如果从这个 stdin 中 exit,不会导致容器的停止。这就是为什么推荐大家使用 docker exec 的原因。

##2、删除镜像

删除images,通过image的id来指定删除谁

docker rmi <image id>

##3、删除容器

docker rm

##4、删除所有已经停止的容器

docker rm $(docker ps -a -q)

##5、列出容器

语法
docker ps [OPTIONS]
OPTIONS说明:

-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
-a :显示所有的容器,包括未运行的

##6、copy容器内文件

docker cp nginx:/usr/share/nginx/html /backup/software/docker-app/nginx/html

  1. nginx 容器名称
  2. /usr/share/nginx/html 容器内文件或者目录
  3. /backup/software/docker-app/nginx/html 本地文件或者目录

##7、清理无效镜像

[brmuser@aicloud173 debian-jdk8]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
c71a34c48b70 40 minutes ago 480MB
redis 4.0.14 04c446bf216f 2 weeks ago 89.2MB
nginx 1.17.3 ab56bba91343 2 weeks ago 126MB
如上所示,REPOSITORY和TAG都是,这种镜像在Docker官方文档中被称作dangling images,指的是没有标签并且没有被容器使用的镜像。docker image prune即可删除dangling images:

[brmuser@aicloud173 debian-jdk8]$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:c71a34c48b70b7deb2f3bad1620b3fcbbc49365ad29b42d16a367adb461c3ec4
deleted: sha256:526e7261c3b1263ed14597b6b71757eb97f9f62e7c042622488e086cafc17c13
deleted: sha256:bd8fe959a0db94b44d2cde444283e4b510f3ab2e6842ec9140da0afe71d7ec35
deleted: sha256:d429ca20c13b439ca03720361b29c3d874acefe7f7f0a71450378a4fdcef36c7
deleted: sha256:2e0eb4c9364f1064a57333de3337b92a28005c14b42726908909b51d7cdf3c64
deleted: sha256:0e195091f8b697399eba2e5c7ab57e5510dc0584a5f08a21d426772ac66c573b
deleted: sha256:e694564957d5e580811a0e3169f6e3f80763de6374b0883cab94653f766afb57

Total reclaimed space: 378.9MB
[brmuser@aicloud173 debian-jdk8]$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
redis                     4.0.14              04c446bf216f        2 weeks ago         89.2MB
nginx                     1.17.3              ab56bba91343        2 weeks ago         126MB
netdata/netdata           v1.17.1             d0edd913ffb1        2 weeks ago         364

如果不能,请先使用:docker ps -a并删除容器,最后再次执行:docker image prune

[brmuser@aicloud173 debian-jdk8]$ docker ps -a
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                      PORTS                               NAMES
fc1a844eb7f6        c71a34c48b70                    "/bin/sh -c 'set -ex…"   40 minutes ago      Exited (1) 40 minutes ago                                       competent_yalow
[brmuser@aicloud173 debian-jdk8]$ docker rm fc1a844eb7f6
fc1a844eb7f6

##8、构建镜像

docker build -t debian-jdk8:v1.0 .
-t debian-jdk8:v1.0表示打包的镜像名为debian-jdk,tag为v1.0注意命令的最后有一个. ,这个表示打包的上下文(其实就是Dockerfile所在目录)是在当前目录,然后目录下的Dockerfile就会被编译执行

##9、查看镜像的历史

[brmuser@aicloud173 spring-admin]$ docker history 76dd6992a0f1
IMAGE CREATED CREATED BY SIZE COMMENT
76dd6992a0f1 7 months ago /bin/sh -c #(nop) EXPOSE 9091 0B
7 months ago /bin/sh -c #(nop) ENTRYPOINT [“/bin/sh” “-c… 0B
7 months ago /bin/sh -c #(nop) COPY file:212dc1a96a7dc1b4… 28MB
7 months ago /bin/sh -c #(nop) WORKDIR /apps 0B
7 months ago /bin/sh -c #(nop) MAINTAINER satyendra.shar… 0B
2 years ago /bin/sh -c /var/lib/dpkg/info/ca-certificate… 419kB
2 years ago /bin/sh -c set -x && apt-get update && apt… 142MB
2 years ago /bin/sh -c #(nop) ENV CACERTIFICATES_JAVA… 0B
如果要显示完整的目录,请使用:

docker history 76dd6992a0f1 --no-trunc

##10、运行基础镜像容器

docker run -it ubuntu

##11、stop停止所有容器

docker stop $(docker ps -a -q) //

##11、remove删除所有容器

docker rm $(docker ps -a -q) //