Docker入门手册

1、安装docker
# By lumia98@vip.qq.com

 [root@test ~]$ yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
 [root@test ~]$ yum -y install docker-ce
2、把docker的镜像地址改成国内阿里地址
# By lumia98@vip.qq.com

# 查看镜像地址 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

[root@test ~]$ sudo mkdir -p /etc/docker
[root@test ~]$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://83zgurou.mirror.aliyuncs.com"]
}
EOF

# 重启
[root@test ~]$ sudo systemctl daemon-reload
[root@test ~]$ sudo systemctl restart docker

镜像篇 image

1、获取镜像
# 搜索查询centos的镜像
[root@test ~]$ docker search centos

# 下载镜像
[root@test ~]$ docker pull centos      # 下载最新版本
[root@test ~]$ docker pull centos:6:9  # 下载指定版本
[root@test ~]$ docker pull centos:7.5.1804 # 下载指定版本
2、查看镜像的详细信息
# By lumia98@vip.qq.com

1# 本地已经有的镜像
[root@test ~]$  docker image ls					
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0d120b6ccaa8        2 months ago        215MB
[root@test ~]$ docker image ls	--no-trunc

​```注解
	标识镜像唯一的方法:
		1、REPOSITORY :TAG
			centos:latest
		2、IMAGE ID  (镜像id)
        	0d120b6ccaa8 (sha256:64位的号码,默认只截取12位)

2# 镜像详细信息查看
[root@test ~]$ docker image inspect centos:latest   # 通过镜像名与tag
[root@test ~]$ docker image inspect 0d120b6ccaa8	# 通过image id查看

3# 只显示镜像id,常用与删除镜像
[root@test ~]$  docker image ls -q
0d120b6ccaa8
3、镜像的导入导出
# 导出centos镜像
[root@test ~]$ docker image save centos:latest > /opt/soft/cetos.iso
 ```centos:latest 可以换成image id
 
# 导入centos镜像
[root@test ~]$ docker image load -i /opt/soft/cetos.iso
​```/opt/soft/cetos.iso 存放目录可以随便
4、删除镜像
[root@test ~]$ docker image ls       # 查看镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0d120b6ccaa8        2 months ago        215MB
[root@test ~]$ docker image rm 0d120b6ccaa8  # 选择image id更准确
Untagged: centos:latest
Untagged: centos@sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd
Deleted: sha256:0d120b6ccaa8c5e149176798b3501d4dd1885f961922497cd0abef155c869566
Deleted: sha256:291f6e44771a7b4399b0c6fb40ab4fe0331ddf76eda11080f052b003d96c7726

​```强制删除镜像
	docker image rm -f 0d120b6ccaa8


# 删除索引镜像---------------->慎用
[root@test ~]$ docker image rm -f `docker image ls -q`
5、修改镜像TAG
[root@test ~]$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0d120b6ccaa8        2 months ago        215MB
[root@test ~]$ docker image tag 0d120b6ccaa8 ubuntu:latest  # 修改镜像名称
[root@test ~]$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0d120b6ccaa8        2 months ago        215MB
ubuntu              latest              0d120b6ccaa8        2 months ago        215MB

​```如果原有镜像有tag,那么在修改是一个镜像连接。如果是none,则会改成修改的tag名称

容器篇 container

容器的运行是通过基础镜像 image
1、交互式启动容器
# 交互式运行容器,退出容器数据也没了
[root@test ~]$ docker container run -it  IMAGE ID 或者REPOSITORY:TAG  	启动保留运行状况
[root@test ~]$ docker container run -it --rm 0d120b6ccaa8		         退出即销毁

# 交互式运行容器,指定容器名字
[root@test ~]$ docker container run -it  --name="test"   0d120b6ccaa8       启动保留运行状况
[root@test ~]$ docker container run -it  --name="test"  --rm 0d120b6ccaa8   退出即销毁 

​```-it  代表交互式运行
​```0d120b6ccaa8  是 IMAGE ID
​```	docker container == docker
​```--rm 表示容器退出即删除运行的容器名称这些,docker container ls -a 看不到
1.1、守护式启动容器
# By lumia98@vip.qq.com

[root@test ~]$ docker container run -d --name="mynginx" nginx
​```-d 后台运行
​```--name 自定义启动后的容器名称
​```nginx  是容器名称
2、端口映射方式启动容器
[root@test ~]$ docker run -d -p 8080:80 --name="test_nginx_80" nginx:latest
# 查看运行情况,因为太长了,删除了部分显示数据
​```-p 8080:80  代表宿主系统的8080端口映射到容器的80端口
[root@test ~]$ docker container  ls 
CONTAINER ID    STATUS              PORTS                  NAMES
f423ef23e6d2    Up 38 seconds       0.0.0.0:8080->80/tcp   test_nginx_80


# 指定ip映射端口
[root@test ~]$ docker container run  -d -p 172.21.3.211:808:80 --name="nginx_80" nginx
​```指定172.21.3.211的808端口映射到容器的80端口
​```172.21.3.211::80  随机生成端口映射
​```172.21.3.211:53:53:udp   映射一个udp的端口

[root@test ~]$ docker container ls
CONTAINER ID   IMAGE   STATUS           PORTS                            NAMES
25373f4de987   nginx   Up 23 seconds     172.21.3.211:80->80/tcp           nginx_80
3、登录已退出的容器
[root@test ~]$ docker container start 容器id      # 后台启动,用于后台运行停止的容器
# 交互式登录
[root@test ~]$ docker container start -i 容器id	# 交互式启动
​```容器id == CONTAINER ID
4、容器连接方式(退出或者后台运行)
[root@test ~]$ docker container attach 容器id 或 容器名称
​```如果容器在后台运行了,运行此命令可以登录进去

# 子进程的方式登录(常用方式),后台运行的容器可以用这个连接
[root@test ~]$ docker container exec -it 04e97a33ccef /bin/bash
​```04e97a33ccef 是 CONTAINER ID
​```04e97a33ccef 可以换成 NAMES
5、关闭容器运行
[root@test ~]$  docker container stop 4415113ae7f6
​```4415113ae7f6 是 CONTAINER ID
5、删除不需要的容器
# 先查看不需要的容器,找到CONTAINER ID
[root@test ~]$ docker container ls -a 
# 删除
[root@test ~]$ docker container rm 4415113ae7f6

# 删除所有容器--->慎用
[root@test ~]$ docker container rm `docker container ls -a -q`
6、查看运行的容器
# By lumia98@vip.qq.com

# 查看正在运行的容器
[root@test ~]$ docker container ls     
CONTAINER ID     IMAGE           COMMAND        CREATED           STATUS          PORTS   NAMES
87541ee352bc    0d120b6ccaa8    "/bin/bash"     6 minutes ago     Up 6 minutes            ecstatic_gauss
​```注释
   CONTAINER ID   # 容器的唯一号码(自动生成)
   NAMES          # 容器名称(启动时没有设置,则自动创建)
   STATUS         # 运行状态: Up 代表运行中; Exited 代表退出

# 查看运行过的所有容器
[root@test ~]$ docker container ls -a
CONTAINER ID  IMAGE         COMMAND       CREATED         STATUS                   PORTS      NAMES
6e756e7613f0  0d120b6ccaa8  "/bin/bash"   2 minutes ago   Up 2 minutes                        test
87541ee352bc  0d120b6ccaa8  "/bin/bash"   15 minutes ago  Exited (0) 3 minutes ago            ecstatic_gauss 
7、查询容器的详细信息(包括ip等信息)
[root@test ~]$ docker container inspect nginx
​```nginx 是运行的容器名称NAMES,也可以用 CONTAINER ID
8、查看容器的进程、日志
# 查看进程
[root@test ~]$ docker container top 25373f4de987
​```25373f4de987 是 CONTAINER ID

# 查看日志
[root@test ~]$ docker container logs -t 25373f4de987
​```log -tf CONTAINER ID  时时监控日志
​```log -tf --tail 10 25373f4de987 查看最后10条日志

数据卷 Volume

1、宿主目录映射到容器中
[root@test ~]$ docker container run -d -p 81:80 --name="nginx_disk1" -v /opt:/opt nginx:latest
​```-v /opt:/opt  第一个/opt是宿主的目录,第二个是容器目录
​```挂载多个目录,再次使用 -v xxx:xxx,如下:
[root@test ~]$ docker container run -d -p 81:80 --name="nginx_disk1" -v /opt:/opt  -v /test:/opt  nginx:latest
2、创建数据卷容器(挂载多个相同目录,采用这个)
# 创建数据卷
[root@test ~]$ docker container run -d --name "create_volumes" -v /opt/test_volume:/opt/contan_volume centos
​```--name "create_volumes"              创建一个名称是create_volumes的数据卷
​```/opt/test_volume:/opt/contan_volume  前宿主目录;后容器挂载的目录(这个目录容器没有,挂载了才有)```centos                               镜像

# 使用数据卷(启动容器),容器卷可以多个容器使用
[root@test ~]$ docker container run -d -p 8081:80 --volumes-from create_volumes --name "v8081" nginx
​```--volumes-from 挂载数据卷  
​```create_volumes 数据卷名称  
​```--name "v8081" 启动一个叫v8081的容器

[root@test ~]$ docker container run -d -p 8082:80 --volumes-from create_volumes --name "v8082" nginx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值