Docker笔记-Docker容器使用

Docker笔记-Docker容器使用

1、Docker 客户端

docker 客户端非常简单,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。

$ docker

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。

例如我们要查看 docker stats 指令的具体使用方法:

$ docker stats --help
# 显示docker的版本信息
$ docker version
# 显示docker的系统信息
$ docker info    
# 显示命令的帮助
$ docker command --help

2、容器使用

2.1 获取镜像

# docker pull 镜像名字[:TAG]
# 拉取|下载镜像
$ docker pull 

$ docker pull mysql
$ docker pull ubuntu
$ docker pull ubuntu:13.10

2.2 启动容器

以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

# 格式:docker run [可选项] image
# 格式:docker run [OPTIONS] IMAGE [COMMAND][ARG]
$ docker run -it ubuntu /bin/bash

参数说明:

  • -i:交互式操作。
  • -t:终端。
  • ubuntu:ubuntu 镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

OPTIONS说明:

# 有些是一个减号,有些是两个减号

# 为容器指定一个名称
--name="容器新名字"

# 后台运行容器,并返回容器ID,也即启动守护式容器
-d

# 以交互模式运行容器,通常与-t同时使用
-i

# 为容器重新分配一个伪输入终端,通常与-i同时使用
-t

# 随机端口映射
-P

# 指定端口映射,有以下四种格式:
# ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort
-p

要退出终端,直接输入 exit:

# exit: 退出容器并停止
# Ctrl + P + Q: 容器退出不停止
root@ed09e4490c57:/# exit

在这里插入图片描述

2.3 查看所有容器

$ docker ps -a
# 查看正在运行的容器
$ docker ps

在这里插入图片描述

2.4 启动一个已经停止的容器

$ docker start b750bbbcfd88(容器id)

在这里插入图片描述

2.5 后台运行容器

在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec

如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

2.6 进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach
  • docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
2.6.1 attach 命令

下面演示了使用 docker attach 命令。

$ docker run -itd --name ubuntu-test ubuntu /bin/bash
$ docker attach 1e560fca3906

注意: 如果从这个容器退出,会导致容器的停止。

在这里插入图片描述

2.6.2 exec 命令

下面演示了使用 docker exec 命令。

$ docker run -itd --name ubuntu-test ubuntu /bin/bash
$ docker exec -it 1e560fca3906 /bin/bash

在这里插入图片描述

注意: 如果从这个容器退出,容器不会停止,这就是为什么推荐大家使用 docker exec 的原因。

更多参数说明请使用 docker exec --help 命令查看。

2.7 停止一个容器

$ docker stop <容器ID>

在这里插入图片描述

2.8 重启容器

停止的容器可以通过 docker restart 重启:

$ docker restart <容器ID>

在这里插入图片描述

2.9 导出和导入容器

2.9.1 导出容器

如果要导出本地某个容器,可以使用 docker export 命令。

$ docker export 1e560fca3906 > ubuntu.tar

导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。

这样将导出容器快照到本地文件。

在这里插入图片描述

在这里插入图片描述

2.9.2 导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像

test/ubuntu:v1:

$ cat ubuntu.tar | docker import - test/ubuntu:v1
$ docker import ubuntu.tar test/ubuntu:v1

在这里插入图片描述

在这里插入图片描述

此外,也可以通过指定 URL 或者某个目录来导入,例如:

$ docker import http://example.com/exampleimage.tgz example/imagerepo test/ubuntu:v2

2.10 删除容器

删除容器使用 docker rm 命令:

$ docker rm -f 1e560fca3906

在这里插入图片描述

下面的命令可以清理掉所有处于终止状态的容器。

$ docker container prune

在这里插入图片描述

# 删除所有容器
$ docker rm -f $(docker ps -aq)

在这里插入图片描述

# 删除所有容器
$ docker ps -a -q | xargs docker rm -f

在这里插入图片描述

2.11 查看所有的镜像

# 查看所有本机上的镜像
$ docker images
$ docker images centos

# 可选项
-a,--all # 列出所有镜像
-q,--quiet # 指向是镜像的id

在这里插入图片描述

各个选项说明:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同

的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

参数说明:

# 列出本地所有的镜像(含中间映射层)
-a 

# 只显示镜像ID
-q 

# 显示镜像的摘要信息
--digests

# 显示完整的镜像信息
--no-trunc

2.12 搜索镜像

# docker search [OPTIONS] 镜像名字
# 搜索镜像
$ docker search 

# 可选项
--filter=STARS=3000
# 显示完整的镜像描述
--no-trunc

在这里插入图片描述

在这里插入图片描述

  • NAME:镜像仓库源的名称

  • DESCRIPTION:镜像的描述

  • OFFICIAL:是否 docker 官方发布

  • stars:类似 Github 里面的 star,表示点赞、喜欢的意思

  • AUTOMATED:自动构建

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/

2.13 删除镜像

# 删除镜像
docker rmi

# 删除单个镜像
docker rmi 镜像id

# -f:强制删除
docker rmi -f 镜像id

# 删除全部的镜像
docker rmi -f $(docker images -aq) 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.14 容器的启动、重启、停止、强制重启

$ docker run -itd --name ubuntu-test ubuntu /bin/bash
$ docker stop 容器id

在这里插入图片描述

$ docker start 容器id

在这里插入图片描述

$ docker restart 容器id

在这里插入图片描述

$ docker kill 容器id

在这里插入图片描述

2.15 查看日志

# 查看日志
$ docker logs 容器id|名字
$ docker logs -f 容器id|名字

在这里插入图片描述

# -t 是加入时间戳
# -f 跟随最新的日志打印
# --tail 数字显示最后多少条
$ docker logs -f -t --tail n 容器ID
$ docker logs -f -t --tail 10  333530680f58

在这里插入图片描述

2.16 查看进程

# 查看docker中容器的进程信息
$ docker top 容器id|名字

在这里插入图片描述

2.17 查看元数据

# 查看镜像的元数据
$ docker inspect 容器id|名字

在这里插入图片描述

2.18 Docker和Linux之间的文件拷贝

# 从容器内拷贝文件到主机上
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
$ docker exec -it 795894a0c3bf /bin/bash

# 在docker容器内部新建/opt/zhangshixing目录和1.txt文件
# docker cp 容器id:容器内路径 目的主机路径
$ docker cp 795894a0c3bf:/opt/zhangshixing/1.txt /home/zhangshixing/work

在这里插入图片描述

# docker cp 主机路径 容器id:容器内路径
$ docker cp /home/zhangshixing/work/2.txt 795894a0c3bf:/opt/zhangshixing/
$ docker exec -it 795894a0c3bf /bin/bash

在这里插入图片描述

2.19 查看容器

$ docker ps [OPTIONS]

OPTIONS说明:

# 列出当前所有正在运行的容器+历史上运行过的
-a

# 显示最近创建的容器
-l

# 显示最近n个创建的容器
-n

# 静默模式,只显示容器编号
-q

# 不截断输出
--no-trunc

2.20 退出容器

两种退出方式

# 容器停止退出
exit 

# 容器不停止退出
ctrl+P+Q 

2.21 安装练习

2.21.1 安装Nginx
$ docker search nginx
[root@zsx work]# docker search nginx
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                             Official build of Nginx.                        15818     [OK]       
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   2094                 [OK]
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   818                  [OK]
jc21/nginx-proxy-manager          Docker container for managing Nginx proxy ho…   275                  
linuxserver/nginx                 An Nginx container, brought to you by LinuxS…   159                  
tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp…   145                  [OK]
jlesage/nginx-proxy-manager       Docker container for Nginx Proxy Manager        143                  [OK]
alfg/nginx-rtmp                   NGINX, nginx-rtmp-module and FFmpeg from sou…   110                  [OK]
nginxdemos/hello                  NGINX webserver that serves a simple page co…   77                   [OK]
privatebin/nginx-fpm-alpine       PrivateBin running on an Nginx, php-fpm & Al…   60                   [OK]
nginx/nginx-ingress               NGINX and  NGINX Plus Ingress Controllers fo…   57                   
nginxinc/nginx-unprivileged       Unprivileged NGINX Dockerfiles                  54                   
staticfloat/nginx-certbot         Opinionated setup for automatic TLS certs lo…   25                   [OK]
nginxproxy/nginx-proxy            Automated Nginx reverse proxy for docker con…   24                   
nginx/nginx-prometheus-exporter   NGINX Prometheus Exporter for NGINX and NGIN…   22                   
schmunk42/nginx-redirect          A very simple container to redirect HTTP tra…   19                   [OK]
centos/nginx-112-centos7          Platform for running nginx 1.12 or building …   16                   
centos/nginx-18-centos7           Platform for running nginx 1.8 or building n…   13                   
bitwarden/nginx                   The Bitwarden nginx web server acting as a r…   11                   
flashspys/nginx-static            Super Lightweight Nginx Image                   11                   [OK]
mailu/nginx                       Mailu nginx frontend                            9                    [OK]
sophos/nginx-vts-exporter         Simple server that scrapes Nginx vts stats a…   7                    [OK]
ansibleplaybookbundle/nginx-apb   An APB to deploy NGINX                          3                    [OK]
wodby/nginx                       Generic nginx                                   1                    [OK]
arnau/nginx-gate                  Docker image with Nginx with Lua enabled on …   1                    [OK]
$ docker pull nginx
[root@zsx work]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
7d63c13d9b9b: Already exists 
5cb019b641b5: Pull complete 
d477de77abf8: Pull complete 
c60e7d4c1c30: Pull complete 
365a49996569: Pull complete 
039c6e901970: Pull complete 
Digest: sha256:fd63aac07effae8efcc4677b6197783b11a674b6664ba86e76884b1af3ffe345
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
$ docker run -d --name zsxnginx -p 3344:80 nginx
[root@zsx work]# docker run -d --name zsxnginx -p 3344:80 nginx
3de589d93efc02235447f2bc6b4080bd446b62e33190dc0b826f7d72ef44f988
$ curl localhost:3344
[root@zsx work]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

浏览器访问:

在这里插入图片描述

2.21.2 安装Tomcat
$ docker search tomcat
[root@zsx work]# docker search tomcat
NAME                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
tomcat                        Apache Tomcat is an open source implementati…   3177      [OK]       
tomee                         Apache TomEE is an all-Apache Java EE certif…   93        [OK]       
dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   58                   [OK]
kubeguide/tomcat-app          Tomcat image for Chapter 1                      31                   
consol/tomcat-7.0             Tomcat 7.0.57, 8080, "admin/admin"              18                   [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…   11                   
andreptb/tomcat               Debian Jessie based image with Apache Tomcat…   10                   [OK]
rightctrl/tomcat              CentOS , Oracle Java, tomcat application ssl…   7                    [OK]
arm64v8/tomcat                Apache Tomcat is an open source implementati…   6                    
unidata/tomcat-docker         Security-hardened Tomcat Docker container.      5                    [OK]
amd64/tomcat                  Apache Tomcat is an open source implementati…   3                    
jelastic/tomcat               An image of the Tomcat Java application serv…   2                    
fabric8/tomcat-8              Fabric8 Tomcat 8 Image                          2                    [OK]
cfje/tomcat-resource          Tomcat Concourse Resource                       2                    
oobsri/tomcat8                Testing CI Jobs with different names.           2                    
ppc64le/tomcat                Apache Tomcat is an open source implementati…   1                    
picoded/tomcat7               tomcat7 with jre8 and MANAGER_USER / MANAGER…   1                    [OK]
camptocamp/tomcat-logback     Docker image for tomcat with logback integra…   1                    [OK]
99taxis/tomcat7               Tomcat7                                         1                    [OK]
chenyufeng/tomcat-centos      tomcat基于centos6的镜像                              1                    [OK]
secoresearch/tomcat-varnish   Tomcat and Varnish 5.0                          0                    [OK]
s390x/tomcat                  Apache Tomcat is an open source implementati…   0                    
softwareplant/tomcat          Tomcat images for jira-cloud testing            0                    [OK]
$ docker pull tomcat
[root@zsx work]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
bb7d5a84853b: Already exists 
f02b617c6a8c: Already exists 
d32e17419b7e: Already exists 
c9d2d81226a4: Already exists 
fab4960f9cd2: Already exists 
da1c1e7baf6d: Already exists 
1d2ade66c57e: Already exists 
ea2ad3f7cb7c: Already exists 
5ec7a6447249: Pull complete 
9edce51e4887: Pull complete 
Digest: sha256:6c77e3b328d6c60e1c5b5c524dedfe562361bf0b05a77df608ffca8f6c7202f9
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
$ docker run -d --name tomcat01 -p 9999:8080 tomcat
[root@zsx work]# docker run -d --name tomcat01 -p 9999:8080 tomcat
3f520bbbb3710e782d0132edf0fa423634ed58c7dbf756658ffd8dd5f344ca80
$ curl localhost:9999
[root@zsx work]# curl localhost:9999
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/10.0.13</h3></body></html>

浏览器访问:

在这里插入图片描述

2.21.2 Docker可视化portainer
$ docker search portainer
[root@zsx work]# docker search portainer
NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
portainer/portainer              This Repo is now deprecated, use portainer/p…   2141                 
portainer/portainer-ce           Portainer CE - a lightweight service deliver…   848                  
portainer/agent                  An agent used to manage all the resources in…   123                  
portainer/templates              App Templates for Portainer http://portainer…   23                   
lihaixin/portainer               docker ui                                       15                   [OK]
greenled/portainer-stack-utils   Bash scripts to deploy/undeploy stacks in a …   6                    [OK]
portainer/portainer-k8s-beta     Portainer for Kubernetes BETA                   5                    
portainerci/portainer            Portainer images automatically created via P…   5                    
portainer/golang-builder         Utility to build Golang binaries.               4                    [OK]
6053537/portainer-ce             portainer-ce中文汉化版                               4                    
portainer/base                   Multi-stage build image to create the Portai…   2                    [OK]
portainer/portainer-ee           Portainer BE - a fully featured service deli…   2                    
hassioaddons/portainer                                                           2                    
portainer/agent-k8s-beta         Portainer for Kubernetes BETA (agent)           1                    
softonic/portainer-endpoint      Allows auto register all the swarm nodes in1                    [OK]
cqkz/portainer-zh                portainer-ce:2.1.1-alpine,汉化文件来自恩山…             1                    
iconviet/portainer                                                               0                    
hassioaddons/portainer-amd64                                                     0                    
portainerci/agent                Portainer agent images automatically created…   0                    
portainerci/portainer-ee         Portainer EE CI repository                      0                    
xanderstrike/portainer-issue     for illustrating a portainer issue              0                    
antsoftxyz/portainer-api         A portainer api wrapper which can help you C…   0                    
helloysd/portainer                                                               0                    
11384eb/portainer                                                                0                    
nenadilic84/portainer                                                            0                    
$ docker pull portainer/portainer
[root@zsx work]# docker pull portainer/portainer
Using default tag: latest
latest: Pulling from portainer/portainer
94cfa856b2b1: Pull complete 
49d59ee0881a: Pull complete 
a2300fd28637: Pull complete 
Digest: sha256:fb45b43738646048a0a0cc74fcee2865b69efde857e710126084ee5de9be0f3f
Status: Downloaded newer image for portainer/portainer:latest
docker.io/portainer/portainer:latest
$ docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer  portainer/portainer
[root@zsx work]# docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer  portainer/portainer
15b7ee1b11251b3b8be9f6066268e6b3f8b935b0770703c81b94e542c851a58f

浏览器输入docker宿主机:http://192.168.201.113:9000/

首次启动设置账号密码:adminzsx123456

在这里插入图片描述

选择第一个选项Local:

在这里插入图片描述

首页:在这里插入图片描述

2.22 镜像的变更历史

$ docker history 镜像名

在这里插入图片描述

2.23 常用命令合集

在这里插入图片描述

在这里插入图片描述

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值