docker的安装
1.在线安装docker
官方文档手册:https://docs.docker.com/install/linux/docker-ce/centos/
2.先将旧版docker卸载
sudo yum remove docker-ce \
docker-ce-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.安装一组工具
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
3.设置yml仓库地址
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.更新yml缓存
sudo yum makecache fast
5.安装新版docker
sudo yum install docker-ce docker-ce-cli containerd.io
启动测试
1.启动docker
sudo systemctl start docker
2.设置开机自动启动
sudo systemctl enable docker
3.运行hello-world镜像,验证docker安装成功
sudo docker run hello-world
运行成功如图所示代码,如果测试没有成功,请添加以下配置,然后重启docker
镜像加速
由于国内网络问题,需要配置加速器来加速。
修改配置文件 /etc/docker/daemon.json
下面命令直接生成文件 daemon.json
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
之后重新启动服务。
# 重新加载docker配置
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker
查看镜像配置
docker info
docker镜像操作
1.下载镜像
https://hub.docker.com/
如图所示搜索添加命令
2.离线添加镜像,将自己本地电脑里的镜像上传
执行导入的命令
docker load -i 文件名
或者
docker load < 文件名
查看导入的镜像
docker images
或
docker image ls
centos 7 容器
docker run -it centos:7 ls
docker run -it centos:7 ps
docker run -it centos:7 top
docker run -it centos:7 bash
# 回到宿主机
exit
- -it 这是两个参数,一个是 -i:交互式操作,一个是 -t:进入终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
- bash 放在镜像名后的是命令,这里我们希望有个交互式的shell,因此使用bash
# 参数 d 是后台运行
# 如果不指定运行命令,容器会运行镜像设置的一个默认命令
# centos:7镜像设置的默认命令是 bash
docker run -dit centos:7
# 查看镜像设置
docker history centos:7
# 查看正在运行的容器
docker ps
进入容器后,运行指定的命令
docker exec -it 76f(镜像id前三位,内容随机) mkdir d1
docker exec -it 76f ls
docker exec -it 76f touch d1/f1
docker exec -it 76f ls d1
docker exec -it 76f bash
# 退出容器的命令,回到宿主机
exit
文件夹挂载
# --name 容器命名
# --rm 容器终止时,自动删除
docker run \
-dit \
--name centos7 \
--rm \
-v /usr/app:/opt/app \
centos:7
# 查看容器描述
docker inspect centos7
# 进入容器
docker exec -it centos7 bahs
# 在容器中,进入/opt/app目录
cd /opt/app
# 在目录下生成一个文件
echo aaaaaa > f1
# 查看文件
ls
cat f1
#回到宿主机查看文件
exit
cd /usr/app
ls
cat f1
数据卷挂载
数据卷挂载本质就是目录挂载
给目录路径起一个名字,用一个方便的名称来表示一个目录的路径
# 停止前面的容器, 停止时,容器会自动删除
docker stop centos7
# 创建数据卷 my-vol
docker volume create my-vol
# 查看数据卷的真实路径
docker inspect my-vol
# 启动一个新的容器
docker run \
-dit \
--name centos7 \
--rm \
-v my-vol:/opt/app \
centos:7
# 进入容器
docker exec -it centos7 bash
# 在容器中,进入/opt/app目录下
cd /opt/app
# 在目录下生成一个文件
echo bbbbbb > f2
# 查看文件
ls
cat f2
# 回到宿主机查看文件
exit
cd /var/lib/docker/volumes/my-vol/_data(该路径是查看数据卷真实路径下的路径)
ls
cat f2
端口映射
# 启动tomcat容器,端口映射到宿主机的 80端口
docker run \
-d \
--name tomcat80 \
--rm \
-p 80:8080 \
tomcat
# 查看容器日志
docker logs tomcat80
# 使用浏览器访问宿主机的80端口
http://自己设置的主机ip
虚拟网络,容器互联
# 创建新的虚拟网络
docker network create my-net
# 查看网络
docker network ls
# 查看网络描述
docker inspect my-net
# 查看宿柱机的虚拟网卡
ifconfig
# 启动容器app1 ,连接到虚拟网络 my-net
docker run \
-dit \
--name app1 \
--rm \
--network my-net \
centos:7
# 启动容器app2,连接到虚拟网络 my-net
docker run \
-dit \
--name app2 \
--rm \
--network my-net \
centos:7
#查看容器的ip
docker inspect app1
docker inspect app2
# 互ping
# 宿主机ping app1 和 app2
ping 172.18.0.2
ping 172.18.0.3
# app1 ping 宿主机和 app2
docker exec -it app1 ping 172.18.0.1
docker exec -it app1 ping app2
# app2 ping 宿主机和 app1
docker exec -it app2 ping 172.18.0.1
docker exec -it app2 ping app1
本文部分内容来自涛哥博客的docker内容:https://blog.csdn.net/weixin_38305440(更多详细内容请参考涛哥博客)