Docker 基本操作

目录

1.Docker 基本命令

2. Docker镜像命令

2.1 docker images 列出本机所有镜像

2.2 docker search 搜索

2.3 docker pull 拉取镜像

2.4 删除单个镜像  docker rmi 镜像名称:[TAG]    参数 -f 为强制删除

3. Docker 容器的基本命令

3.1 创建并启动容器  docker run [OPTIONS] IMAGE [COMMAND][ARG..]

3.2 列出容器  docker ps [OPTIONS]

3.3 退出容器:

3.4 进入容器: docker attach 容器ID 或 容器名

3.5 启动容器 :docker start 容器ID 或 容器名

3.6 重启容器: docker restart 容器ID 或 容器名

3.7 停止容器:docker stop 容器ID 或 容器名

3.8 删除容器:docker rm 容器ID

3.9 进入容器执行命令:docker exec -it  容器名称或容器ID 执行命令

3.10 查看容器日志: docker logs [OPTIONS] CONTAINER

3.11 查看容器进程:docker top 容器ID

3.12 宿主机和容器之间文件拷贝:docker cp

3.13 提交运行时容器成为镜像

3.14 推送镜像到hub服务器

3.15 docker容器设置自动启动


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搜索更方便

  • [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]
    OPTIONS 可选参数
--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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值