Docker容器基础入门
1 linux下环境安装docker
环境:Centos 7
安装条件:docker 3.10以上
操作:
[root@slave1 yum.repos.d]#cd /etc/yum.repos.d/
## 关闭防火墙
[root@slave1 yum.repos.d]#systemctl stop firewalld.service
[root@slave1 yum.repos.d]#wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
## 查看docker安装包
[root@slave1 yum.repos.d]#yum list|grep docker
## 安装社区版
[root@slave1 yum.repos.d]#yum install -y docker-ce.x86_64
## 设置开机启动
[root@slave1 yum.repos.d]#systemctl enable docker
## 更新xfsprogs
[root@slave1 yum.repos.d]#yum -y update xfsprogs
[root@slave1 yum.repos.d]#systemctl start docker
[root@slave1 yum.repos.d]#docker version
[root@slave1 yum.repos.d]#docker info
2 如何搜索docker镜像
- 查看本地镜像 docker images
- 搜索镜像 docker search centos
- 过滤官方镜像 docker search --filter “is-official=true” centos
- 过滤大于多少颗星星的 docker search --filter stars=10 centos
- 下载centos7镜像 docker pull centos:7
- 修改本地镜像名字(小写) docker tag centos:7 mycentos:1
- 本地镜像的删除 docker rmi centos:7
3 配置阿里云镜像
- 配置步骤
登录阿里云 --> 镜像加速器 --> 复制地址
[root@slave1 ~]# vi /etc/docker/daemon.json
{"registry-mirrors": ["https://5xok66d4.mirror.aliyuncs.com"] }
重启:
[root@slave1 ~]#systemctl daemon-reload&&systemctl restart docker
4 docker容器基本操作
-
构建容器 docker run -itd --name=mycentos centos:7
- -i 表示以交互模式运行容器
- -d 后台运行容器,返回容器ID
- -t 为容器重新分配一个伪输入终端
- –name 指定名称
-
查看本地所有的容器 docker ps -a
-
查看本地正在运行的容器 docker ps
-
停止容器 docker stop CONTAINER_ID/CONTAINER_NAME
-
一次性停止所有容器 docker stop $(docker ps -a -q)
-
启动容器 docker start CONTAINER_ID/CONTAINER_NAME
-
重启容器 docker restart CONTAINER_ID/CONTAINER_NAME
-
删除容器 docker rm CONTAINER_ID/CONTAINER_NAME
-
强制删除容器 docker rmi -f CONTAINER_ID/CONTAINER_NAME
-
查看容器详细信息 docker inspect CONTAINER_ID/CONTAINER_NAME
-
进入容器
docker exec -it CONTAINER_ID /bin/bash- 退出
exit
- 退出
5 容器与宿主主机之间文件复制与挂载
- 从宿主机复制到容器
- docker cp 宿主机本地路径 容器名字/ID:容器路径
# 将123文件复制到容器
[root@slave1 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2675c91a2007 centos:7 "/bin/bash" 16 minutes ago Up 13 minutes affectionate_moore
[root@slave1 opt]# docker cp /opt/123.txt 2675c91a2007:/home/
- 从容器复制到宿主机
- docker cp 容器名字/ID:容器路径 宿主机本地路径
# 进入容器,创建文件,然后退出;再复制
[root@slave1 opt]# docker exec -it 2675c91a2007 /bin/bash [root@2675c91a2007 /]# vi 456.txt
[root@2675c91a2007 home]# exit
[root@slave1 opt]# docker cp 2675c91a2007:/home/456.txt /opt
- 宿主机文件夹挂载到容器里
- docker run -itd -v 宿主机路径:容器路径 镜像ID
# 文件夹挂载,启动centos:7容器,进入容器目录,
[root@slave1 opt]# docker run -itd -v /opt/xd/:/home centos:7
511eb96135a7f0eb59fe4bc851ae147763edf35baa7d05fe92810d99a466f262
[root@slave1 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
511eb96135a7 centos:7 "/bin/bash" About a minute ago Up About a minute exciting_proskuriakova
2675c91a2007 centos:7 "/bin/bash" 16 hours ago Up 16 hours affectionate_moore
[root@slave1 opt]# docker exec -it 511eb96135a7 /bin/bash
[root@511eb96135a7 /]# cd /home
[root@511eb96135a7 home]# ls
[root@511eb96135a7 home]# ls -lrt
total 0
[root@511eb96135a7 /]# cd /home
# 容器内新建文件,宿主机xd目录出现相同的文件
[root@511eb96135a7 home]# vi 44.txt
[root@511eb96135a7 home]# ls
44.txt ee.txt
[root@511eb96135a7 home]# exit
exit
[root@slave1 xd]# ls
44.txt ee.txt
# 宿主机xd目录创建456.txt文件,容器内同步出现
[root@slave1 xd]# vi 456.txt
[root@slave1 xd]# docker exec -it 511eb96135a7 /bin/bash
[root@511eb96135a7 /]# cd /home
[root@511eb96135a7 home]# ls
44.txt 456.txt ee.txt
- 适用场景 :宿主机挂载文件给容器适用,容器宕死这样文件不会被删除,宿主机可以新建容器将文件再挂载给新容器适用,原容器可以之间删除