内容来源徐老师
docker的特点:开箱即用、快速部署、可移植强、环境隔离。
系统环境centos7

1、docker安装

错误:docker-ce conflicts with 2:docker-1.13.1-74.git6e3bb8e.el7.centos.x86_64
Error: docker-ce-cli conflicts with 2:docker-1.13.1-208.git7d71120.el7_9.x86_64
如果有报错,一般来说系统已安装以前的docker版本(v1.13),直接操作:

yum remove docker
yum erase docker-common-2:1.13.1-208.git7d71120.el7_9.x86_64
curl -o /etc/yum.repos.d/docker-ce.repo  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	yum install docker-ce -y
	systemctl start docker
	systemctl enable docker

docker查看端口通不通 docker 查看容器端口_docker查看端口通不通

1.2 调整镜像源从国内获取 和 调整docker数据存储位置

cat /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"],
   "graph": "/data/docker"
}
systemctl restart docker.service

随后使用 docker info查看是否生效

docker查看端口通不通 docker 查看容器端口_docker_02

2、docker运行镜像

镜像能干什么?
镜像可以启动容器,容器需要依赖镜像才可以启动。

2.1使用镜像运行容器

docker run hello-world

[root@lb-136 system]# docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   4 months ago   13.3kB

2.2 搜索镜像

去官网搜 : https://hub.docker.com/search?q=nginx&type=image

docker search nginx

2.3 下载/拉取镜像

docker pull centos:7

2.4 查看镜像列表

docker images
docker image ls

2.5 删除镜像

docker rmi hello-world:latest
docker rmi -f hello-world:latest

docker ps -a

docker查看端口通不通 docker 查看容器端口_linux_03

2.6 备份镜像

docker save centos:7 > /opt/centos.tar.gz

2.7 恢复镜像

docker load < /opt/centos.tar.gz

3、docker容器管理

3.1 启动第一个容器

[root@container ~]# docker run -it centos:7 /bin/bash

容器运行的参数含义
docker run 表示要启动一个容器
-i:表示 启动一个可交互的容器。并且持续打开标准输入
-t:表示使用终端关联到容器的标准输入输出上
IMAGE:表示我们需要运行的镜像
COMMAND:运行该镜像需要执行的命

docker容器-基本操作

3.2 如何运行一个自启动的容器

docker run -it centos:7 echo "hello docker"
docker run --name=mycentos centos:7 echo "hello world"
docker ps -a

docker查看端口通不通 docker 查看容器端口_docker查看端口通不通_04

docker run -itd centos:7 /bin/bash
运行一个测试的容器:
docker run --rm centos:7 echo "hello rm"

-i, --interactive                    Keep STDIN open even if not attached
-t, --tty                            Allocate a pseudo-TTY
-d, --detach                         Run container in background and print container ID
--rm                             Automatically remove the container when it exits

启动|停止|restart

docker start    7bff740a8391
docker stop     7bff740a8391
docker restart  7bff740a8391

查看状态

docker info
docker ps 
docker ps -a

如何进入一个容器

进入的是要是一个“正在运行”的容器

[root@lb-136 awkFile]# docker exec -it 6dd252ec67aa /bin/bash
 Error response from daemon: Container 6dd252ec67aafd4515101219a1c8973d6594c06ec8bd4a2e13499cd6a6d15a10 is not running
docker run -itd centos:7
325641007d13ca604611081a4a571a9a57e0aef664cac33acc3cbed1c35fbf35

docker exec -it 325641007d13 /bin/bash

容器服务对外暴露端口的方法:

-p 8888:80
	-p hostip:hostport:containerPort   
	-p hostip::containerPort 		#随机端口的方式
	-P 随机
docker run -d -p 8888:80 nginx:latest
docker ps

docker查看端口通不通 docker 查看容器端口_docker_05

3.8 容器的整个生命周期

以centos容器为例:
		1.Docker会去获取centos的镜像,检查本地是否存在,如果存在则使用,如果不存在则上默认的远程仓库拉取该进行。
		2.Docker通过Centos镜像创建一个新的容器,并且在镜像的文件 系统之上添加一层 ”可读写“ 的层来运行应用程序。
		3.Docker会通过网桥设备,为容器划分一个IP地址,并挂载至于容器中。
		4.Docker会执行启动的命令,比如/bin/bash 表示启动一个和本地主机可交互的进程。
		5.执行完毕后容器就自动退出。让我们的进程一直处于RUNNING状态。

清理容器

docker rm $(docker ps  -a  -q)

docker ps  -a  -q 的含义
ps          List containers
-a, --all             Show all containers (default shows just running)
-q, --quiet           Only display container IDs

也可参考: 《docker ps参数》

4、安装docker监控工具

4.1 docker图形工具 Portainer

docker pull portainer/portainer-ce
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

对于参数 -v /var/run/docker.sock:/var/run/docker.sock的解释:

这个一般用于在docker里面需要启动docker才会挂载这个吧,也就是docker in docker。
原因:需要通过容器,跟Docker引擎的守护进程进行通信,从而管理Docker宿主机上Docker环境

这里也说下docker的数据持久化挂载。上面的:

docker查看端口通不通 docker 查看容器端口_docker查看端口通不通_06


data volumes是用docker创建的volume来做数据持久化。

docker查看端口通不通 docker 查看容器端口_docker查看端口通不通_07

15行的是data volumes , 14行的是bind mounting 。可参考

浏览器访问 192.168.26.136:9000 即可

4.2 docker监控工具 cAdvisor

docker pull google/cadvisor

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8787:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

浏览器访问 192.168.26.136:8787 即可