目录

1、Docker的安装

1.1.前提条件

1.2.yum安装docker

1.3.Docker启停操作

1.4.Docker镜像源更改 

1.5.验证Docker启动镜像

2、Docker常用操作

2.1镜像相关操作

列出镜像列表

查找镜像

拉取镜像

设置镜像标签

删除镜像

2.2容器相关操作

制作容器

查看容器

查看容器网络端口映射

容器start/stop/restart 

进入容器

查看容器日志

删除容器


1、Docker的安装

1.1.前提条件

CentOS 仅发行版本中的内核支持 Docker。

Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

使用 uname -r 查看当前系统内核版本,当前演示版本为CentOS7。

uname -r

1.2.yum安装docker

CentOS自带Docker,可以直接安装。

yum -y install docker

安装完成后,如下图所示

1.3.Docker启停操作

#启动Docker
systemctl start docker
#停止Docker
systemctl stop docker
#重启Docker
systemctl restart docker
#查看Docker运行状态
systemctl status docker
#查看Docker版本
docker version

1.4.Docker镜像源更改 

创建或修改 /etc/docker/daemon.json 文件,修改为如下形式

vim /etc/docker/daemon.json

修改daemon.json文件为国内镜像源,当前设置为网易镜像源

{"registry-mirrors": ["http://hub-mirror.c.163.com"] }

重载配置文件并重新启动Docker

#重载配置文件
systemctl daemon-reload
#重启docker
systemctl restart docker

附国内加速地址:

1.5.验证Docker启动镜像

docker run hello-world

由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。

2、Docker常用操作

2.1镜像相关操作

  • 列出镜像列表

docker images

 参数说明

  • REPOSTITORY:表示镜像的仓库源

  • TAG:镜像的标签

  • IMAGE ID:镜像ID

  • CREATED:镜像创建时间

  • SIZE:镜像大小

  • 查找镜像

语法docker search [OPTIONS],如查找nginx

docker search nginx

 参数说明

  • NAME:镜像仓库源的名称
  • DESCRIPTION:镜像的描述
  • STARS:点赞/收藏数量
  • OFFICIAL:是否docker官方发布
  • AUTOMATED: 自动构建。
  • 拉取镜像

 语法docker pull [OPTIONS],如拉取nginx,拉取默认版本镜像(默认查询的最上面第一个)

docker pull nginx

如需指定版本或指定镜像,可以根据版本或指定镜像进行拉取

#拉取指定版本镜像
docker pull nginx:1.18
#拉取指定镜像,参数即search的NAME
docker pull docker.io/bitnami/nginx

  • 设置镜像标签

语法docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]为镜像添加一个新的标签

docker tag 9c7a54a9a43c hello-world.test

  •  删除镜像

语法docker rmi [OPTIONS] IMAGE [IMAGE...],删除一个或多个镜像,参数可为镜像ID或NAMES,多个镜像以空格间隔

参数为REPOSTITORY时,相同名称的REPOSTITORY默认删除latest,如需删除指定版本,则添加版本号

参数为IMAGE ID时,则直接删除指定镜像

2.2容器相关操作

  • 制作容器

语法docker run [OPTIONS] IMAGE [COMMAND] [ARG...],通过run命令创建一个新的容器

创建一个端口为80的nginx

#简易启动一个nginx
docker run -p 80:80 -d nginx

常用选项说明

-d, --detach=false, 指定容器运行于前台还是后台,默认为false
-i, --interactive=false, 打开STDIN,用于控制台交互
-t, --tty=false, 分配tty设备,该可以支持终端登录,默认为false
-u, --user="", 指定容器的用户
-a, --attach=[], 登录容器(必须是以docker run -d启动的容器)
-w, --workdir="", 指定容器的工作目录
-c, --cpu-shares=0, 设置容器CPU权重,在CPU共享场景使用
-e, --env=[], 指定环境变量,容器中可以使用该环境变量
-m, --memory="", 指定容器的内存上限
-P, --publish-all=false, 指定容器暴露的端口
-p, --publish=[], 指定容器暴露的端口
-h, --hostname="", 指定容器的主机名
-v, --volume=[], 给容器挂载存储卷,挂载到容器的某个目录
--volumes-from=[], 给容器挂载其他容器上的卷,挂载到容器的某个目录
--cap-add=[], 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cap-drop=[], 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cidfile="", 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
--cpuset="", 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
--device=[], 添加主机设备给容器,相当于设备直通
--dns=[], 指定容器的dns服务器
--dns-search=[], 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
--entrypoint="", 覆盖image的入口点
--env-file=[], 指定环境变量文件,文件格式为每行一个环境变量
--expose=[], 指定容器暴露的端口,即修改镜像的暴露端口
--link=[], 指定容器间的关联,使用其他容器的IP、env等信息
--lxc-conf=[], 指定容器的配置文件,只有在指定--exec-driver=lxc时使用
--name="", 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
--net="bridge", 容器网络设置:
bridge 使用docker daemon指定的网桥
host //容器使用主机的网络
container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
none 容器使用自己的网络(类似--net=bridge),但是不进行配置
--privileged=false, 指定容器是否为特权容器,特权容器拥有所有的capabilities
--restart="no", 指定容器停止后的重启策略:
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
--rm=false, 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--sig-proxy=true, 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理

  • 查看容器

语法docker ps [OPTIONS] ,查看容器列表

#查看运行中的容器
docker ps
#查看所有容器
docker ps -a

参数说明 

  • CONTAINER ID: 容器 ID。
  • IMAGE: 使用的镜像。
  • COMMAND: 启动容器时运行的命令。
  • CREATED: 容器的创建时间。
  • STATUS: 容器状态。
    • 状态有7种:
      created(已创建)
      restarting(重启中)
      running(运行中)
      removing(迁移中)
      paused(暂停)
      exited(停止)
      dead(死亡)
  • PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
  • NAMES: 自动分配的容器名称

  • 查看容器网络端口映射

语法docker port CONTAINER [PRIVATE_PORT[/PROTO]]

#根据容器名称查询映射端口
docker port nervous_feynman
#根据容器id查询映射端口
docker port 48de190154d9

  • 容器start/stop/restart 

语法docker start/stop/restart [OPTIONS] CONTAINER [CONTAINER...]

#根据容器id启停容器
docker stop 48de190154d9
docker start 48de190154d9
docker restart 48de190154d9

#根据容器NAMES启停容器
docker stop nervous_feynman
docker start nervous_feynman
docker restart nervous_feynman

  • 进入容器

语法docker exec [OPTIONS] CONTAINER COMMAND [ARG...],只能进入运行中的容器

docker exec -it 48de190154d9 sh
#or
docker exec -it 48de190154d9 /bin/bash

每个容器可认为是一个虚拟机,exit退出容器

  • 查看容器日志

语法docker logs [OPTIONS] CONTAINER

#根据容器id查询日志
docker logs 48de190154d9
#根据容器names查看日志
docker logs nervous_feynman
  • 删除容器

语法docker rm [OPTIONS] CONTAINER [CONTAINER...],删除一个或多个容器,参数可为容器ID或NAMES,多个容器以空格间隔

docker rm dfcf491e8547

Logo

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

更多推荐