Docker 容器操作
Docker 容器操作
一、容器基本概念
- 容器本质:一个运行中的进程,具有隔离性
- 隔离核心:每个容器拥有独立的文件系统,由 Docker 镜像提供
- 镜像内容:应用程序代码、运行时依赖、文件系统对象等
二、容器相关操作
1、创建容器
-i
:保持标准输入打开-t
:分配伪终端
[root@docker ~]# docker create -it centos:7
[root@docker ~]# docker ps
# 显示当前系统正在运行的容器
[root@docker ~]# docker ps -a
# 显示系统中所有容器(包括没有运行的)
CONTAINER ID
:容器ID号
IMAGE
:容器依赖的镜像
COMMAND
:容器中运行的命令
CREATED
:创建时间
STATUS
:创建的状态信息
PORTS
:端口
NAMES
:容器的名称
2、启动容器
使用docker create 命令新建的容器处于停止状态,可以使用docker start命令来启动它
[root@docker ~]# docker start b8a3087515cd
[root@docker ~]# docker ps
3、运行容器
除了创建容器后通过 start 命令来启动,也可以直接新建并启动容器
等价于先执行 docker create 命令,再执行 docker start 命令
[root@docker ~]# docker run -it centos:7
[root@d4de123a025a /]# exit
对于创建的bash容器,当用户使用exit命令退出bash进程之后,容器也会自动退出
这是因为对于容器来说,当其中的应用退出后,容器的使命完成,也就没有继续运行的必要了
4、停止容器
可以使用 docker pause 命令来暂停一个运行中的容器
[root@docker ~]# docker pause b8a3087515cd
处于paused状态的容器,可以使用 docker unpause 命令来恢复到运行状态
[root@docker ~]# docker unpause b8a3087515cd
可以使用 docker stop 来终止一个运行中的容器
[root@docker ~]# docker stop great_visvesvaraya
执行 docker container prune 命令,会自动清除掉所有处于停止状态的容器
[root@docker ~]# docker container prune
5、进入容器
在使用-d参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入
docker attach:不建议大家使用docker attach,因为退出容器终端,会导致容器的停止
docker exec:推荐大家使用docker exec命令,因为退出容器终端,不会导致容器的停止
[root@docker ~]# docker attach mycentos1
[root@docker ~]# docker exec -it mycentos2 /bin/bash
6、删除容器
默认情况下,docker rm命令只能删除已经处于终止或退出状态的容器,并不能删除还处于运行状态的容器
如果要直接删除一个运行中的容器,可以添加-f参数
[root@docker ~]# docker rm -f httpd
7、导出容器
某些时候,需要将容器从一个系统迁移到另外一个系统,此时可以使用docker的导入和导出功能,这也是 docker 自身提供的一个重要特性
导出容器是指,导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,可以使用docker export 命令。
-o
选项也可以重定向>
来代替
[root@docker ~]# docker export -o centos7.tar.gz mycentos1
8、导入容器
导入容器,导出的文件又可以使用docker import命令导入变成镜像
[root@docker ~]# docker import centos7.tar.gz mycs7:v1
# 导入镜像
[root@docker ~]# docker run -itd --name mycentos mycs7:v1 /bin/bash
# 创建容器
三、容器相关运用
1、容器端口映射
映射随机端口
当我们启动一个web容器的时候,可以将容器的端口映射宿主机上面,这样便于我们访问该web服务器
-P 参数将容器内部使用的80端口映射到宿主机的随机端口上来
[root@docker ~]# docker run --name httpd -itd -P httpd:latest
映射指定端口
我们也可以通过 -p 参数将容器内的80端口映射到宿主机的指定端口上
[root@docker ~]# docker run --name httpd2 -itd -p 8080:80 httpd:latest
2、查看容器日志
可以使用docker logs查看容器的日志信息,例如:我们想要查看httpd2容器的访问日志
除了可以查看访问日志以外,只要是该容器产生的日志都会显示出来,包括服务的启动/关闭之类的
[root@docker ~]# docker logs httpd2
3、查看容器详细信息
可以使用docker inspect查看容器的详细信息,例如:我们想要查看httpd2容器详细信息
会显示,容器是什么时候创建的,使用的什么镜像,容器端口号,使用的什么网络等等
[root@docker ~]# docker inspect httpd2
四、容器部署 WEB 服务器示例
1、获取镜像
[root@docker ~]# docker pull nginx
2、使用默认的配置来启动一个nginx容器实例
[root@docker ~]# docker run -itd --name nginx-t -p 80:80 nginx:latest
3、打开浏览器访问此地址
4、nginx部署
[root@docker ~]# mkdir -p /root/nginx/www
[root@docker ~]# mkdir -p /root/nginx/logs
[root@docker ~]# mkdir -p /root/nginx/conf
5、拷贝容器内nginx默认配置文件到本地当前目录下的conf目录
[root@docker ~]# docker cp cde960294046:/etc/nginx/nginx.conf /root/nginx/conf/
6、部署容器命令
[root@docker ~]# docker run -itd -p 8888:80 --name nginx-tt -v /root/nginx/www/:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs/:/var/log/nginx nginx:latest
7、创建自己的网页
[root@docker ~]# cd /root/nginx/www/
[root@docker www]# echo "wiltjer" > index.html
8、使用浏览器进行访问
五、其他容器命令
1、复制文件
docker container cp
2、查看变更
docker container diff
3、查看端口映射
docker container port