目录
2.4 删除单个镜像 docker rmi 镜像名称:[TAG] 参数 -f 为强制删除
3.1 创建并启动容器 docker run [OPTIONS] IMAGE [COMMAND][ARG..]
3.4 进入容器: docker attach 容器ID 或 容器名
3.5 启动容器 :docker start 容器ID 或 容器名
3.6 重启容器: docker restart 容器ID 或 容器名
3.7 停止容器:docker stop 容器ID 或 容器名
3.9 进入容器执行命令:docker exec -it 容器名称或容器ID 执行命令
3.10 查看容器日志: docker logs [OPTIONS] CONTAINER
1.Docker 基本命令
- 启动Docker:systemctl start docker
- 停止Docker:systemctl stop docker
- 重启Docker:systemctl restart docker
- 开机启动Docker: systemctl enable docker
- 查看Docker概要信息:docker info
- 查看Docker 帮助文档: docker --help
- 查看Docker 版本信息:docker version
2. Docker镜像命令
2.1 docker images 列出本机所有镜像
[root@base210 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 8-jdk8-adoptopenjdk-openj9 6a9bd4879396 4 days ago 344MB
redis 6.0.8 84c5f6e03bf0 3 weeks ago 104MB
hello-world latest bf756fb1ae65 9 months ago 13.3kB
- REPOSITORY 镜像的仓库源
- TAG 镜像的标签(版本)同一个仓库有多个TAG的镜像,多个版本
- IMAGE ID 镜像ID
- CREATED 创建时间
- SIZE 大小
可选参数
-a | 显示所有镜像(包括中间层) |
-q | 只显示镜像ID |
-qa | 可以组合 |
--digests | 显示镜像的摘要信息 |
--no-trunc | 显示完整的镜像信息 |
2.2 docker search 搜索
通常通过网站Docker Hub搜索更方便
-
OPTIONS 可选参数[root@base210 docker]# docker search tomcat NAME DESCRIPTION STARS OFFICIAL AUTOMATED tomcat Apache Tomcat is an open source implementati… 2844 [OK] tomee Apache TomEE is an all-Apache Java EE certif… 83 [OK] dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base… 55 [OK] bitnami/tomcat Bitnami Tomcat Docker Image 36 [OK] kubeguide/tomcat-app Tomcat image for Chapter 1 29 consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 17 [OK] cloudesire/tomcat Tomcat server, 6/7/8 15 [OK] aallam/tomcat-mysql Debian, Oracle JDK, Tomcat & MySQL 13 [OK] arm32v7/tomcat Apache Tomcat is an open source implementati… 10 rightctrl/tomcat CentOS , Oracle Java, tomcat application ssl… 6 [OK] maluuba/tomcat7-java8 Tomcat7 with java8. 6 unidata/tomcat-docker Security-hardened Tomcat Docker container. 4 [OK] jelastic/tomcat An image of the Tomcat Java application serv… 2 amd64/tomcat Apache Tomcat is an open source implementati… 2 arm64v8/tomcat Apache Tomcat is an open source implementati… 2 ppc64le/tomcat Apache Tomcat is an open source implementati… 1 99taxis/tomcat7 Tomcat7 1 [OK] camptocamp/tomcat-logback Docker image for tomcat with logback integra… 1 [OK]
--no-trunc | 显示完整的镜像描述 |
-s | 列出收藏数不小于指定值的镜像 |
--automated | 只列出Docker Hub 自动构建类型的镜像 |
2.3 docker pull 拉取镜像
docker pull 镜像名称:[TAG] 不加tag 默认拉取最新版本
[root@base210 docker]# docker pull centos:7
7: Pulling from library/centos
75f829a71a1c: Pull complete
Digest: sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
2.4 删除单个镜像 docker rmi 镜像名称:[TAG] 参数 -f 为强制删除
[root@base210 docker]# docker rmi -f hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:4cf9c47f86df71d48364001ede3a4fcd85ae80ce02ebad74156906caff5378bc
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
- 删除多个: docker rmi -f 镜像名称1:[TAG] 镜像名称2:[TAG] 中间用空格隔开
运行的容器不能删除,可以使用 -f 强制删除;
-
删除全部: docker rmi -f $(docker images -qa) 清库
3. Docker 容器的基本命令
3.1 创建并启动容器 docker run [OPTIONS] IMAGE [COMMAND][ARG..]
--name="容器新名字” 为容器指定一个名称
-i:以交互模式运行容器,通常与-t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与-i 一起使用;
-d:后台运行容器,并返回容器ID;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
[root@base210 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 992e3b7be046 10 hours ago 133MB
tomcat 8-jdk8-adoptopenjdk-openj9 6a9bd4879396 4 days ago 344MB
redis 6.0.8 84c5f6e03bf0 3 weeks ago 104MB
centos 7 7e6257c9f8d8 8 weeks ago 203MB
[root@base210 docker]# docker run -it --name tomcat8 6a9bd4879396
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /opt/java/openjdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
06-Oct-2020 08:56:32.742 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/8.5.58
06-Oct-2020 08:56:32.745 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Sep 10 2020 21:45:33 UTC
06-Oct-2020 08:56:32.745 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 8.5.58.0
启动普通容器:docker run --name 别名 镜像ID
启动交互式容器:docker run -it --name 别名 镜像ID 来运行一个容器,取别名,交互模式运行,以及分配一个伪终端。
守护式方式创建并启动容器:docker run -di --name 别名 镜像ID
使用exit 命令退出
端口映射:
docker run -it -p 8888:8080 tomcat
docker run -it -P tomcat
[root@base210 ~]# docker run -it -p 8888:8080 --name=tomcat8 6a9bd4879396
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /opt/java/openjdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
07-Oct-2020 01:41:58.830 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/8.5.58
07-Oct-2020 01:41:58.832 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Sep 10 2020 21:45:33 UTC
3.2 列出容器 docker ps [OPTIONS]
[root@base210 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b43760df54e6 6a9bd4879396 "catalina.sh run" 6 seconds ago Up 6 seconds 8080/tcp tomcat8_test
OPTIONS 说明
-a | 显示所有的容器,包括未运行的 | docker ps -a |
-f | 根据条件过滤显示的内容 | |
--format | 指定返回值的模板文件 | |
-l | 显示最近创建的容器 | docker ps -l |
-n | 列出最近创建的容器 | docker ps -n 2 |
--no-trunc | 不截断输出 | |
-q | 静默模式,只显示容器编号 | |
-s | 显示总的文件大小 |
3.3 退出容器:
exit 容器停止退出
ctrl+P+Q 容器不停止退出
3.4 进入容器: docker attach 容器ID 或 容器名
[root@base210 ~]# docker attach b43760df54e6
3.5 启动容器 :docker start 容器ID 或 容器名
[root@base210 ~]# docker start tomcat8
tomcat8
#查看容器状态
[root@base210 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b43760df54e6 6a9bd4879396 "catalina.sh run" 4 hours ago Up About a minute 8080/tcp tomcat8_test
ffe5f630be14 6a9bd4879396 "catalina.sh run" 4 hours ago Up 16 seconds 8080/tcp tomcat8
d7d0e742adcc bf756fb1ae65 "/hello" 6 hours ago Exited (0) 6 hours ago inspiring_kapitsa
2f6d26eea7ed bf756fb1ae65 "/hello" 6 hours ago Exited (0) 6 hours ago condescending_pasteur
3.6 重启容器: docker restart 容器ID 或 容器名
[root@base210 ~]# docker restart b43760df54e6
b43760df54e6
[root@base210 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b43760df54e6 6a9bd4879396 "catalina.sh run" 4 hours ago Up About a minute 8080/tcp tomcat8_test
ffe5f630be14 6a9bd4879396 "catalina.sh run" 4 hours ago Up 16 seconds 8080/tcp tomcat8
d7d0e742adcc bf756fb1ae65 "/hello" 6 hours ago Exited (0) 6 hours ago inspiring_kapitsa
2f6d26eea7ed bf756fb1ae65 "/hello" 6 hours ago Exited (0) 6 hours ago condescending_pasteur
3.7 停止容器:docker stop 容器ID 或 容器名
[root@base210 ~]# docker stop tomcat8
tomcat8
#
[root@base210 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b43760df54e6 6a9bd4879396 "catalina.sh run" 4 hours ago Up 3 minutes 8080/tcp tomcat8_test
ffe5f630be14 6a9bd4879396 "catalina.sh run" 4 hours ago Exited (0) 19 seconds ago tomcat8
d7d0e742adcc bf756fb1ae65 "/hello" 6 hours ago Exited (0) 6 hours ago inspiring_kapitsa
2f6d26eea7ed bf756fb1ae65 "/hello" 6 hours ago Exited (0) 6 hours ago condescending_pasteur
暴力删除,直接杀掉进程 (不推荐) docker kill 容器Id或容器名
3.8 删除容器:docker rm 容器ID
如果删除正在运行的容器,会报错,我们假如要删除的haul,要强制删除;
强制删除 docker rm -f 容器ID
删除多个容器: docker rm -f 容器ID1 容器ID2 中间空格隔开
删除所有容器:docker rm -f $(docker ps -a)
[root@base210 ~]# docker rm -f d7d0e742adcc 2f6d26eea7ed
d7d0e742adcc
2f6d26eea7ed
3.9 进入容器执行命令:docker exec -it 容器名称或容器ID 执行命令
直接操作容器,执行完,回到宿主主机终端
我们一般用于启动容器里的应用 比如 tomcat nginx redis 等等
#进入tomcat8 容器中
[root@base210 ~]# docker exec -it fdf3dc98eda4 /bin/bash
root@fdf3dc98eda4:/usr/local/tomcat# ll
total 120
drwxr-xr-x 1 root root 30 Oct 2 05:59 ./
drwxr-xr-x 1 root root 20 Oct 2 05:51 ../
drwxr-xr-x 2 root root 331 Oct 2 05:59 bin/
-rw-r--r-- 1 root root 19318 Sep 10 21:50 BUILDING.txt
drwxr-xr-x 1 root root 22 Oct 7 01:32 conf/
-rw-r--r-- 1 root root 5408 Sep 10 21:50 CONTRIBUTING.md
drwxr-xr-x 2 root root 4096 Oct 2 05:59 lib/
-rw-r--r-- 1 root root 57011 Sep 10 21:50 LICENSE
drwxrwxrwx 1 root root 177 Oct 7 01:32 logs/
drwxr-xr-x 2 root root 134 Oct 2 05:59 native-jni-lib/
-rw-r--r-- 1 root root 1726 Sep 10 21:50 NOTICE
-rw-r--r-- 1 root root 3257 Sep 10 21:50 README.md
-rw-r--r-- 1 root root 7136 Sep 10 21:50 RELEASE-NOTES
-rw-r--r-- 1 root root 16262 Sep 10 21:50 RUNNING.txt
drwxrwxrwx 2 root root 30 Oct 2 05:59 temp/
drwxr-xr-x 2 root root 6 Oct 2 05:59 webapps/
drwxr-xr-x 7 root root 81 Sep 10 21:47 webapps.dist/
drwxrwxrwx 2 root root 6 Sep 10 21:46 work/
3.10 查看容器日志: docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多信息
-f,--follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如42m(42分钟)
--tail string 从日志末尾显示多少行日志,默认是all
-t,--timestamps 显示时间戳
--tail string 从日志末尾显示多少行日志,默认是all
-t,--timestamps 显示时间戳
--until string显示自某个timestamp 之前的日志,或相对时间 如42m(即42分钟)
[root@base210 ~]# docker logs 4e27573be097
06-Oct-2020 13:01:35.048 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/8.5.58
06-Oct-2020 13:01:35.050 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Sep 10 2020 21:45:33 UTC
06-Oct-2020 13:01:35.051 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 8.5.58.0
3.11 查看容器进程:docker top 容器ID
[root@base210 ~]# docker top b43760df54e6
UID PID PPID C STIME TTY TIME CMD
root 9882 9865 0 20:45 pts/0 00:00:06 /opt/java/openjdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
3.12 宿主机和容器之间文件拷贝:docker cp
宿主机文件 copy to 容器内
docker cp 需要拷贝的文件或目录 容器名称或容器ID:容器目录
[root@base210 ~]# docker run -ti --name=centos7 7e6257c9f8d8
[root@ca88a3cb8560
[root@base210 tmp]# docker cp 1.txt centos7:/tmp
##容器中已经含有
[root@ca88a3cb8560 tmp]# ll
total 8
-rw-r--r-- 1 root root 13 Oct 6 13:53 1.txt
-rwx------ 1 root root 836 Aug 9 21:39 ks-script-V_wEqJ
-rw------- 1 root root 0 Aug 9 21:38 yum.log
容器内 copy to 宿主机
docker cp 容器ID或名称:容器目录 宿主机目录
#将yum.log文件从容器拷贝到当前目录
[root@base210 tmp]# docker cp centos7:/tmp/yum.log .
[root@base210 tmp]# ll
总用量 4
-rw-r--r-- 1 root root 13 10月 6 21:53 1.txt
drwx------ 3 root root 17 10月 5 21:46 systemd-private-9e3173cf019d43ac8395099d556fb95b-chronyd.service-emCA9a
drwx------ 3 root root 17 10月 6 14:57 systemd-private-faf0eba1c0204e09abab165afbbad9c2-chronyd.service-HxlXKM
drwx------ 2 root root 6 10月 6 11:37 tmp.GdPluSAtY9
drwxr-xr-x 3 root root 53 10月 3 10:43 tmpsoft
-rw------- 1 root root 0 8月 10 05:38 yum.log
3.13 提交运行时容器成为镜像
docker commit -a='作者' -m='备注' 容器ID 新镜像名称
注意 作者:必须是dockerHub的账号
[root@base210 ~]# docker commit -a='tiankerui' -m='tomcat8' 69be408bcce3 mytomcat8
sha256:fd582ff291e0d95c43dd53d9459823030c87863dc27933c4622f466447ef011a
镜像库中多了tiankerui/mytomcat8
[root@base210 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tiankerui/mytomcat8 latest 0fd265ede93e 58 minutes ago 349MB
nginx latest 992e3b7be046 28 hours ago 133MB
用自定义镜像 启动容器,成功启动。
[root@base210 ~]# docker run -it -p 9999:8080 --name=mytomcat 0fd265ede93e
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /opt/java/openjdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
07-Oct-2020 01:58:50.242 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/8.5.58
07-Oct-2020 01:58:50.244 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Sep 10 2020 21:45:33 UTC
3.14 推送镜像到hub服务器
步骤1、到hub.docker.com 注册下得到 docker id /密码
步骤2、我们用docker login 登录hub服务器
[root@base210 ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: tiankerui
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
步骤3、推送镜像到hub服务器
[root@base210 ~]# docker push tiankerui/mytomcat8
The push refers to repository [docker.io/tiankerui/mytomcat8]
92912731947a: Layer already exists
402a256142f2: Layer already exists
3e568632cdf8: Layer already exists
0495d9d6fde3: Layer already exists
4110d5157995: Layer already exists
c8a716853581: Pushing [==================================================>] 37.96MB
7a694df0ad6c: Pushing [==================================================>] 3.072kB
3fd9df553184: Layer already exists
805802706667: Layer already exists
3.15 docker容器设置自动启动
- 启动时加 --restart=always
- 如果已经启动的项目,则使用update更新:docker update --restart=always isaler_v0.0.11