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
:镜像IDCREATED
:镜像创建时间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 in … 1 [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/
首次启动设置账号密码:admin
和 zsx123456
选择第一个选项Local:
首页:
2.22 镜像的变更历史
$ docker history 镜像名