目录
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
进入容器
查看容器日志
删除容器
CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
使用 uname -r
查看当前系统内核版本,当前演示版本为CentOS7。
uname -r
CentOS自带Docker,可以直接安装。
yum -y install docker
安装完成后,如下图所示
#启动Docker
systemctl start docker
#停止Docker
systemctl stop docker
#重启Docker
systemctl restart docker
#查看Docker运行状态
systemctl status docker
#查看Docker版本
docker version
创建或修改 /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
附国内加速地址:
docker run hello-world
由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。
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时,则直接删除指定镜像
语法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
语法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