一:docker容器
1:Docker基础
Docker是容器引擎,把Linux的cgroup、namespace等容器底层技术进行封装抽象为用户提供创建和管理容器的便捷界面。
1.1:基础介绍
1.1.1:不同应用在宿主机上隔离运行
1.1.2:容器与虚拟机技术对比
1.2安装docker
1.2.1:查看系统内核:uname -r
-
- 添加docker的yum源:
- yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 查看当前yum仓库docker
- yum list docker-ce --show-duplicates
- 安装docker引擎
- yum install -y docker-ce
- 配置docker
- vim /etc/docker/daemon.json
- {
- "graph":"/data/docker",
- "storage-driver":"overlay2",
- "insecure-registries":["registry.access.redhat.com","quay.io"],
- "registry-mirrors":["https://q2gr04ke.mirror.aliyuncs.com"],
- "bip":"172.16.248.1/24",
- "exec-opts":["native.cgoupdrive=systemd"],
- "live-restore":true
- }
- 启动容器:
- systemctl enable --now docker.service
- 查看docker信息:
- docker info
- 启动容器步骤:
- 1. Docker客户端与Docker守护进程联系。
- 2. Docker守护进程从Docker Hub中提取了“hello-world”映像
- 3.Docker守护进程从该映像创建了一个新的容器,该容器运行生成当前正在读取的输出的可执行文件。
- 4. Docker守护进程将输出流化为Docker客户端,由后者发送
1.3:docker镜像管理
1.3.1:镜像是容器的模板,以前是容器、仓库、镜像三者的关系:
1.3.2:在docker主机登录hub.docker
- 注册docker账号:https://hub.docker.com/
- 在docker主机上:
- docker login docker.io
- 输入账号
- 输入密码
1.3.3:登录认证信息存放位置:cat /root/.docker/config.json,可以用echo “” | base64 -d 查看
1.4:docker常用命令
- 可加指定tag对版本进行操作
- 搜索镜像:docker search alpine
- 拉取镜像:docker pull alpine
- 查看本地镜像:docker images 或docker image ls
- 给镜像打标签:docker tag 6dbb9cc54074 docker.io/chenj52/alpine:v3.10.1
- 推送镜像:docker push docker.io/chenj52/alpine:v3.10.1
- 删除镜像:
- 先删除tag标签:docker rmi docker.io/chenj52/alpine:v3.10.1
- 直接删除镜像:docker rmi -f 6dbb9cc54074(IMAGE ID,镜像的id)
1.5:docker镜像的特性
2:容器的基本操作
- 查看容器的进程:docker ps -a
- 启动容器(运行镜像)
- docker run
- 常用参数:
- -i:以交互的方式启动,并持续打开标准输入
- -t:使用终端关联到容器的标准输入输出
- -d:表示将容器放置到后台运行
- --rm:退出后及删除容器
- --name:表示容器唯一名称
- IMAGE:表示要运行的镜像
- COMMAND:表示启动容器时要运行的命令*
- 交互式启动一个容器:docker run -it alpine /bin/sh
- 启动一个后台进程:docker run -d alpine /bin/sleep 300
- 进如运行的容器:docker exec -it 298b03534f6a /bin/sh
容器常用命令:
- 容器停止:docker stop 298b03534f6a
- 容器启动:docker start 298b03534f6a
- 容器重启:docker restart 298b03534f6a
- 容器删除:docker rm 298b03534f6a
- 过滤宿主机上停止的容器并将其删除掉:
- for i in `docker ps -a|grep -i exit|awk '{print $1}'`;do docker rm -f $i;done
修改容器:docker run --name myalpine -it alpine /bin/sh
echo 111>txt
exit
提交容器:docker commit -p myalpine chenj52/alpine:laste_1.txt
3:导入导出镜像
导出镜像:docker save 7b29c0c6ed5d>/root/alpine_1.txt.tar
导入镜像:导入的镜像无tag
- 命令:docker load </root/alpine_1.txt.tar
- 查看IMAGE ID:docker image ls
- 将导入的镜像添加tag标签:docker tag 8605d5023f69 chenj52/alpine:v-new
4:docker日志
docker logs myalpine
docker Logs -f myalpine
5:docker高级应用
5.1:映射端口
命令格式:docker run -p 容器外端口:容器内端口
- 先拉取一个nginx镜像:docker pull nginx
- 查看本地镜像找到拉取下来的nginx:docker image ls
- 将nginx镜像打一下标签:ocker tag 62d49f9bab67 chenj52/nginx:latest
- 映射端口docker run --name mynginx -d --rm -p81:80 chenj52/nginx:latest
- 验证:
- docker ps -a
- ss -tuln | grep 81
- curl http://192.168.248.143:81/