Docker学习02:容器管理

容器,容器是一个镜像的运行实例。可以使用Docker REST API或者CLI来操作容器。容器的实质是进程,但与直接在宿主机执行的进程不同,容器进行运行于属于自己独立的命名空间。因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户id空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主机运行更加案例。

一、运行容器

docker run

常用参数说明

--name	#指定容器名称
-it		#进入容器
-d		#后台运行
--rm	#容器结束后自动删除
-p		#端口映射
-P		#随机端口映射
-e		#指定环境变量
-v		#数据卷挂载

运行一个容器

[root@docker ~]# docker run --name app -p 8080:80 -d nginx
4775f33b42fd551c367cbeab01f1f6ed1e3a48b33320be3814ec1d5dcabe4608
#创建名称为app的容器,基于nginx镜像,将容器80端口映射到宿主机的8080端口并且放到后台运行。

二、容器端口映射

在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。

2.1 -p指定映射(小写p)

ip:hostPort:containerPort:将容器的指定端口的映射指定地址的指定端口上(不常用)

#
docker run --name app -p 127.0.0.1:80:80 -d nginx		
# 映射ip:127.0.0.1的80端口到虚拟机的80端口。

hostPort:containerPort:将容器的指定端口映射到本机的指定端口(常用)

docker run --name app -p 80:80 -d nginx	
映射本机的80端口到虚拟机的80端口。

ip::containerPort:将容器的指定端口映射指定地址的随机端口上

docker run -d -it --name app -p 127.0.0.1::80 nginx

hostPort:containerPort/udp:映射本机指定端口到容器的指定(udp协议)端口

[root@docker ~]# docker run -d -it --name nginx-test02 -p 100:80/udp nginx
09b4d0d91217fec1a28ab8495dd4dbe4c974629e8d19ba9349ccedce7dc34a3d
 
[root@docker ~]# docker port nginx-test02
80/udp -> 0.0.0.0:100		//将本机的100端口映射到容器的UDP协议80端口

2.2 -P 随机映射(大写P)

将容器暴露的所有端口,都随机映射到宿主机上。

docker run -d -it -P --name app nginx

2.3 查看映射端口配置

docker port container_ID/name #容器ID或名称

[root@docker ~]# docker port nginx-test02
80/udp -> 0.0.0.0:100		//将本机的100端口映射到容器的UDP协议80端口

三、容器基础操作

3.1 查看容器列表

默认查看运行中的容器列表

[root@docker ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
4775f33b42fd        nginx               "nginx -g 'daemon of…"   18 minutes ago      Up 2 seconds        0.0.0.0:8080->80/tcp   app

查看所有容器列表

[root@docker ~]# docker ps -a

查看最近一个容器

[root@docker ~]# docker ps -l

只查看容器ID

[root@docker ~]# docker ps -q
4775f33b42fd

3.2 进入容器

# /bin/bash  执行解释器
[root@docker ~]# docker exec -it app /bin/bash
root@4775f33b42fd:/# hostname 
4775f33b42fd

3.3 停止容器

[root@docker ~]# docker stop app
app
#或者
[root@docker ~]# docker stop 4775f33b42fd

3.4 启动容器

[root@docker ~]# docker start 4775f33b42fd
#或者
[root@docker ~]# docker start app

3.5 重启容器

docker restart [container_name | containerID ]

[root@docker ~]# docker restart app

3.6 暂停容器

docker pause [容器名称/容器ID]

[root@docker ~]# docker pause app

3.7 删除容器

删除未运行的容器

[root@docker ~]# docker rm app

-f强制删除容器

[root@docker ~]# docker rm -f app

3.8 取消暂停容器

docker unpause [容器名称/容器ID]

[root@docker ~]# docker unpause app

3.9 杀死容器

docker kill [容器名称/容器ID]

[root@docker ~]# docker kill app

3.10 查看容器信息

docker inspect [容器名称/容器ID]

[root@docker ~]# docker inspect app 

3.11 查看容器日志

docker logs [容器名称/容器ID]

# 访问app容器(nginx)
[root@docker ~]# curl 127.0.0.1:8080

# 查看日志
[root@docker ~]# docker logs app
172.17.0.1 - - [01/Apr/2020:13:21:56 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"

四、容器的文件复制

docker cp

4.1 复制宿主机文件到容器

docker cp [宿主机文件] [容器:目录]

# step01.准备测试文件
[root@docker ~]# echo 'Hello Docker !!!' >test.txt
[root@docker ~]# cat test.txt 
Hello Docker !!!

# step02.复制文件到容器中
[root@docker ~]# docker cp test.txt app:/

# step03.进入容器检验
[root@docker ~]# docker exec -it app /bin/bash
root@4775f33b42fd:/# cat /test.txt 
Hello Docker !!!
4.2 复制容器文件到宿主机

docker cp [容器:目录] [宿主机文件]

# step01.复制容器文件到宿主机
[root@docker ~]# docker cp app:/test.txt /opt/

# step02.检验结果
[root@docker ~]# cat /opt/test.txt 
Hello Docker !!!

五、提交容器为新的镜像

docker commit [容器名称/ID] [镜像名称:tag]

常用参数

-a:指定作者
-m:相关说明信息
-p:提交时暂停容器运行

示例

[root@docker ~]# docker commit app app:v1.0
sha256:e9df5b16fc919e93218940e01e50ca7af06809d860a716ad0290d7012d9da0e8

[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
app                 v1.0                e9df5b16fc91        2 seconds ago       127MB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值