内容来源徐老师
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
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查看是否生效
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
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 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
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的数据持久化挂载。上面的:
data volumes是用docker创建的volume来做数据持久化。
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 即可