0、设置Docker镜像加速器

详见文章:Docker设置ustc的镜像源(镜像加速器)


1、Docker的启动与停止

注: systemctl 命令是系统服务管理器指令。

(1)启动docker(守护进程):

[root@localhost ~]# systemctl start docker

(2)停止docker:

[root@localhost ~]# systemctl stop docker

(3)重启docker:

[root@localhost ~]# systemctl restart docker

(4)查看docker状态:

[root@localhost ~]# systemctl status docker

(5)开机启动:

[root@localhost ~]# systemctl enable docker

(6)查看docker概要信息:

[root@localhost ~]# docker info

如下:

[root@localhost java]# docker info
Client:
 Debug Mode: false

Server:
 Containers: 1
  Running: 0
  Paused: 0
  Stopped: 1
 Images: 1
 Server Version: 19.03.9
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175
 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-1127.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 972.3MiB
 Name: localhost.localdomain
 ID: BGB3:WJY2:5HV7:D65Q:BJHJ:3P7Z:T7NI:3H3Y:VZ4P:RPFJ:LYJ3:PTXB
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

[root@localhost java]# 

(7)查看docker帮助文档

[root@localhost ~]# docker --help

(8)查看已启动的docker信息

[root@localhost ~]# docker ps

注:具体可参考本篇博文相关小节:3、容器(Container)相关命令



2、 镜像(Image)相关命令

2.1 查看镜像

[root@localhost ~]# docker images[root@localhost ~]# docker image ls

如下图:
在这里插入图片描述

说明:

REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期,也不是安装docker的日期)
SIZE:镜像大小

注: 这些镜像都是存储在Docker宿主机的 /var/lib/docker 目录下。


2.2 搜索镜像

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

我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 镜像名称 来寻找适合我们的镜像。

格式:

docker search 镜像名称

如,搜索mysql:

[root@localhost /]# docker search mysql

在这里插入图片描述

说明:

NAME:仓库名称
DESCRIPTION:镜像描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否 docker 官方发布
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的


2.3 拉取镜像

拉取镜像就是从中央仓库中下载镜像到本地。

格式:

docker pull 镜像名称

docker pull 镜像名称:版本

例如,我要下载 mysql 镜像:

拉取最新版本:

[root@localhost ~]# docker pull mysql

拉取指定版本:

[root@localhost ~]# docker pull mysql:5.7

在这里插入图片描述


2.4 删除镜像

(1)按镜像ID删除镜像

格式:

docker rmi 镜像ID

如,删除mysql镜像:

[root@localhost docker]# docker images
REPOSITORY       TAG        IMAGE ID         CREATED           SIZE
mysql            5.7        1b12f2e9257b     3 weeks ago       448MB
hello-world      latest     bf756fb1ae65     10 months ago     13.3kB
[root@localhost docker]# 
[root@localhost docker]# docker rmi 1b12f2e9257b

(2)删除所有镜像(★★★★★

docker rmi `docker images -q`

3、容器(Container)相关命令

3.0 查容器内目录或文件列表(需登录容器,在容器内操作)**

[root@localhost ~]# dir[root@localhost ~]# dir -l[root@localhost ~]# dir 目录名

如,登录容器my_nginx内,查看文件或目录列表:

[root@localhost webapps]# docker exec -it my_nginx /bin/bash
root@4925395ef0eb:/# 
root@4925395ef0eb:/# ll
bash: ll: command not found
root@4925395ef0eb:/# dir
bin  boot  dev	etc  home  lib	lib64  media  mnt  opt	proc  root  run  sbin  srv  sys  tmp  usr  var
root@4925395ef0eb:/# 

3.1 查看容器列表

语法:

docker ps [OPTIONS]

OPTIONS说明:

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

(1)查看正在运行的容器

[root@localhost ~]# docker ps

(2)查看所有容器

[root@localhost ~]# docker ps –a

(3)查看最后一次运行的容器

[root@localhost ~]# docker ps –l

(4)查看停止的容器

[root@localhost ~]# docker ps -f status=exited

3.2 创建与启动容器

创建容器命令:docker run 参数

常用的参数说明:

-i:交互式操作
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。


3.2.1(第一种)交互式方式创建容器

格式:

docker run -it --name=容器名称(起名字) 镜像名称:标签 /bin/bash

查看镜像列表:
在这里插入图片描述
(1)创建my_mysql容器(创建并进入容器)

[root@localhost docker]# docker run -it --name=my_mysql mysql:5.7 /bin/bash
root@48b6a760b4df:/# 

(2)退出当前容器(exit

在这里插入图片描述

(3)查看容器列表

通过ps命令查看可以启动的容器:

[root@localhost ~]# docker ps -a

如下图,my_mysql容器已经创建成功:

在这里插入图片描述


3.2.2(第二种)守护式方式创建容器

格式:

docker run -di --name=容器名称(起名字) 镜像名称:标签 /bin/bash

(1)创建my_mysql2容器

[root@localhost docker]# docker run -itd --name=my_mysql2 mysql:5.7 /bin/bash

(2)登录容器

格式:

docker exec -it 容器名称(或者容器ID) /bin/bash

登录my_mysql2容器:

[root@localhost docker]# docker exec -it my_mysql2 /bin/bash
root@0267de48e9f2:/# exit
exit
[root@localhost docker]# 

3.3 停止与启动容器

(1)停止容器:

docker stop 容器名称(或者容器ID)

如,停止my_mysql容器:

[root@localhost ~]# docker stop my_mysql

(2)启动容器:

docker start 容器名称(或者容器ID)

如,启动my_mysql容器:

[root@localhost ~]# docker start my_mysql

3.4 删除容器

docker rm 容器名称(或容器ID)

如,删除my_mysql容器:

[root@localhost ~]# docker rm my_mysql

3.5 文件拷贝(宿主系统文件 ⇄ 容器内文件)

可使用 docker cp ... 命令进行文件拷贝操作。

(1)将宿主系统的文件/目录 ➨ docker容器内目录

格式:

docker cp 需要拷贝的文件或目录 容器名称:容器目录

如,复制 /user/test/test.txtmy_mysql2容器的/usr/local目录下:

[root@localhost ~]# docker cp /user/test/test.txt my_mysql2:/usr/local

查看my_mysql2 容器内复制过来的文件:

[root@localhost ~]# docker exec -it my_mysql2 /bin/bash
root@0267de48e9f2:/# dir /usr/local
bin  etc  games  include  lib  man  sbin  share  src  test.txt
root@0267de48e9f2:/# 
root@0267de48e9f2:/# cat /usr/local/test.txt
测试文件拷贝copy
root@0267de48e9f2:/# 
root@0267de48e9f2:/# exit
exit
[root@localhost ~]# 

(2)将docker容器内的文件 ➨ 宿主系统目录

格式:

docker cp 容器名称:容器目录 需要拷贝的文件或目录

如,复制 my_mysql2容器的/usr/local/test.txt文件 宿主系统的 /user/test 目录下,并改名为test2.txt

[root@localhost test]# docker cp my_mysql2:/usr/local/test.txt /user/test/test2.txt
[root@localhost test]# ll
总用量 8
-rw-r--r--. 1 root root 23 11月 18 00:30 test2.txt
-rw-r--r--. 1 root root 23 11月 18 00:30 test.txt
[root@localhost test]# 

3.6 目录挂载(创建容器时

说明: 我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主系统某个目录的文件从而去影响容器(避免进入容器修改)。

格式:

docker run -di -v 宿主机目录:容器目录 --name=新生成的容器名称 镜像名:标签 /bin/bash

如,创建容器 my_mysql3 ,并将宿主机目录/user/test 映射容器目录/usr/local/mytest(目录会自动创建) :

[root@localhost ~]# docker run -di -v /user/test:/usr/local/mytest --name=my_mysql3 mysql:5.7 /bin/bash

查看映射情况(启动并进入容器my_mysql3内部):

[root@localhost test]# docker start my_mysql3
my_mysql3
[root@localhost test]# docker exec -it my_mysql3 /bin/bash
root@c89239fa89a7:/# 
root@c89239fa89a7:/# dir /usr/local/mytest
test.txt  test2.txt  test3.txt
root@c89239fa89a7:/# 
root@c89239fa89a7:/# exit
exit
[root@localhost test]# 

如上,查看容器目录my_mysql3:/usr/local/mytest,可以直接看到宿主系统目录/user/test下的所有文件,及映射成功。

【注】:
如果你共享的是多级的目录,可能会出现权限不足的提示。
这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题


3.7 查看容器运行数据& 直接查看容器IP地址

我们可以通过以下命令查看容器运行的各种数据

(1)查看容器所有运行数据

格式:

docker inspect 容器名称(容器ID)

如,查看容器my_mysql3的运行数据(太多,这里不展示了):

[root@localhost test]# docker inspect my_mysql3

(2)直接查看容器IP地址

格式:

docker inspect --format=’{{.NetworkSettings.IPAddress}}’ 容器名称(容器ID)

如,查看容器my_mysql3的IP地址:

[root@localhost test]# docker inspect --format='{{.NetworkSettings.IPAddress}}' my_mysql3
172.17.0.3
[root@localhost test]# 

注: 如若想直接获取其他运行数据,可参考docker inspect 容器名称(容器ID)命令的具体数据,直接修改docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID){{}} 里面的对应属性项即可。


4、Docker备份与恢复

4.1 容器保存为镜像

我们可以通过 docker commit ... 命令将容器保存为新镜像。

格式:

docker commit [OPTIONS] 容器名称(容器ID) [REPOSITORY[:TAG]]

OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。


【例1】:

如,将容器my_mysql保存为新镜像my_mysql2

[root@localhost ~]# docker commit my_mysql my_mysql2
sha256:8b474f1f50e6f5e2c31beb328db91acd46e25a37963e7d45c5beb48b64d3418c
[root@localhost ~]#

【例2】:

如,将容器my_mysql保存为新镜像my_mysql3

[root@localhost ~]# docker commit -a "zhangxiaohu" -m "my copy mysql" my_mysql  my_mysql3:v3
sha256:0358acf99cccfd81f7ad2b439cf54770c1a6ec0ba58929047f947fdc99d85de5
[root@localhost ~]# 

4.2 镜像备份(docker save)

可以使用docker save 命令将指定镜像保存成 .tar 文件。

语法:

docker save [OPTIONS] 要生成的备份文件名.tar [IMAGE…]

OPTIONS 说明:
-o :输出到的文件。

如,将镜像 my_mysql3 生成 my_mysql3_v3.tar 备份文件:

[root@localhost ~]# docker save -o my_mysql3_v3.tar my_mysql3

在这里插入图片描述


4.3 镜像恢复(docker load)

(1)首先删除旧镜像:my_mysql3

[root@localhost ~]# docker rmi my_mysql3:v3

(2)然后使用 docker load 命令恢复镜像

注: docker load 只能恢复 使用 docker save 命令导出的镜像。

语法:

docker load [OPTIONS]

OPTIONS 说明:
--input , -i:指定导入的文件,代替 STDIN。
--quiet , -q :精简输出信息。


如,恢复备份的my_mysql3_v3.tar文件为镜像:

[root@localhost ~]# docker load -i /root/my_mysql3_v3.tar

在这里插入图片描述


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐