03 : docker - 容器常见操作

docker 容器常见操作

1: docker的容器管理命令详解:

docker run -d -p 80:80 nginx:latest
run(创建并运行一个容器)
-d 放在后台
-p 端口映射
-v 源地址(宿主机):目标地址(容器)
nginx:latest docker镜像的名字,最后一个版本

运行一个centos,并进入容器终端:
docker search centos 找到官方的centos镜像
docker pull centos
docker run -it --name centos centos /bin/bash
-it 分配交互式的终端
--name 指定容器的名字
/bin/bash 进入容易后执行的命令,覆盖容器的初始命令

运行后进入容器镜像终端:
[[email protected] /]# hostname -I
172.17.0.2
[[email protected] /]# exit #退出容器即销毁
临时退出容器不销毁方法:ctrl + p 然后松开,再按住ctrl +q

查看容器列表
docker ps #docker container ps (正在运行的容器)
docker ps -a #docker container ps -a (所有运行过的容器,包括已经退出的)
docker ps --no-trunc 显示全部,长格式显示

[[email protected] ~]# docker run -d centos sleep 10 (使用后台方式启动容器,并直接一个命令sleep 10)
651d87d5be24cca4f7a37a25f8d87266b9e8a8b4bcf724106d55bb2c4b030da9
[[email protected] ~]# docker container ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
651d87d5be24 centos "sleep 10" 8 seconds ago Up 7 seconds compassionate_lumiere
4b3716037b2b centos "/bin/bash" 14 minutes ago Exited (0) 12 minutes ago centos
742f43349c54 nginx "nginx -g ‘daemon of…" 13 hours ago Exited (0) 12 hours ago competent_allen
[[email protected] ~]# docker container ps -a (10S过后这个容器就会结束退出了。)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
651d87d5be24 centos "sleep 10" 2 minutes ago Exited (0) 2 minutes ago compassionate_lumiere
4b3716037b2b centos "/bin/bash" 17 minutes ago Exited (0) 15 minutes ago centos
742f43349c54 nginx "nginx -g ‘daemon of…" 13 hours ago Exited (0) 12 hours ago competent_allen
[[email protected] ~]# docker run -d centos (不指定,默认执行镜像制作时候指定的进程命令,比如centos镜像是/bin.bash , nginx镜像是nginx -g `daemon of.....`)

正常停止容器:
docker stop CONTAINER_ID或者NAMES

[[email protected] ~]# docker ps (查看CONTAINER_ID或者NAMES)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cbafd84c8b2 nginx "nginx -g ‘daemon of…" 3 minutes ago Up 3 minutes 80/tcp relaxed_chaum
[[email protected] ~]# docker stop 1cbafd84c8b2 或者docker stop relaxed_chaum
relaxed_chaum
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[[email protected] ~]#

强制杀死容器:
docker kill CONTAINER_ID或者NAMES

删除容器 # 只能删除已经退出的容器,正在运行的容易需要先停止,才能删除 或者加-f 选项强制删除,不建议
docker rm CONTAINER_ID或者NAMES
docker rmi 是删除镜像,注意两者的区别
批量删除容器
docker rm -f `docker ps -a -q`#获取容器的ID号

注意:docker容器内的第一个进程必须一直处于前台运行的状态(必须夯住),否则这个容器,就会处于退出状态!

进入容器:
(目的,调试,排错)

方法1:docker exec (会分配一个新的终端tty)
docker exec -it 容器id或容器名字 /bin/bash

[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e067cb3fe22a centos "/bin/bash" 4 minutes ago Up 4 minutes heuristic_archimedes
[[email protected] ~]# docker exec -it e067cb3fe22a /bin/bash (分配一个新的终端进入容器)
[[email protected] /]# exit # ctrl + p 然后松开 在安装ctrl +q
这两种方式退出,都不会停止容器,因为原终端还在运行。只是把新分配的终端退出了。

方法2:docker attach(使用的是同一个终端,弃用了解就好,使用方法1 exec进入。)
docker attach [OPTIONS] CONTAINER
只能使用ctrl + p 然后松开 在安装ctrl +q退出容器,如果使用exit会直接销毁容器。

2: docker容器的网络访问
指定映射(docker 会自动添加一条iptables规则来实现端口映射)
-p hostPort:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort(随机端口)
-p hostPort:containerPort:udp
-p 81:80 –p 443:443 可以指定多个-p
大 P 宿主机随机端口映射到容器端口:
docker run -d -P nginx:latest

3:docker的数据卷管理

数据卷(文件或目录)
-v src(创建的卷目录):dst(容器的目录)
-v src(宿主机的目录): dst(容器的目录)
第一种:把容器里面的文件,拷贝到卷中
第二种:把宿主机的目录,挂载到容器的目录中

第一种用法:
[[email protected] ~]# docker volume create xujin #创建一个卷
xujin
[[email protected] ~]# docker volume ls # 查看
DRIVER VOLUME NAME
local xujin
[[email protected] ~]# docker volume inspect xujin # 查看卷存放的位置
[
{
"CreatedAt": "2019-10-20T18:28:22+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/xujin/_data",
"Name": "xujin",
"Options": {},
"Scope": "local"
}
]
#把刚才创建的xujin卷,挂到nginx 容器的数据目录下面(/usr/share/nginx/html)。
[[email protected] ~]# docker run -d -p 80:80 -v xujin:/usr/share/nginx/html nginx
9e9fb65dc865b2decfc57d85c622832554bcb1aa4fbabe7018c013c2c7c7becb
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e9fb65dc865 nginx "nginx -g ‘daemon of…" 7 seconds ago Up 6 seconds 0.0.0.0:80->80/tcp cocky_burnell
[[email protected] _data]# cd /var/lib/docker/volumes/xujin/_data/
[[email protected] _data]# ls
50x.html index.html
[[email protected] _data]# echo "我是新创建的xujin卷" >index.html #网页访问就会是我们刚才指定的内容了

第二种:
[[email protected] tools]# docker rm -f `docker ps -a -q` #删除所有容器
9e9fb65dc865
#启动nginx ,把本地的/tools目录(这个目录下面创建一个index.html文件)挂到nginx容器的/usr/share/nginx/html下
[[email protected] tools]# docker run -d -p 80:80 -v /tools/:/usr/share/nginx/html nginx
0a6b60ac3ec81aab2600fa68459a20cfc4e485beb2fc7cb88ecbe665add84f62
[[email protected] tools]#

思路扩展:指定多个IP端口映射,挂载多个目录。
docker run -d -p 80:80 -p 80:80 -v /tools/xiaoniao.conf:/etc/nginx/conf/ -v /tools/:/usr/share/nginx/html nginx

原文地址:https://www.cnblogs.com/jim-xu/p/11708615.html

时间: 2024-08-27 03:09:32

03 : docker - 容器常见操作的相关文章

通过ssh方式登陆Docker容器的操作记录

前面几篇已经介绍了Docker基础环境的部署,下面介绍下通过ssh方式登陆Docker容器的操作记录 [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos7 7.3.1611 d5ebea14da54 2 weeks ago 311 MB <none> <none> d5c154b612c8 2 weeks ago 311 MB test latest ecefde07358

Docker之容器常见操作

一.启动容器 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped ) 的容器重新启动.因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器. 新建并启动 例如,下面的命令输出一个 "Hello World",之后终止容器. $ docker run ubuntu:14.04 /bin/echo 'Hello world' Hello world 这跟在本地直接执行 /bin/echo 'hello world' 几乎感

docker容器的操作

[[email protected] ~]# docker container --help Usage: docker container COMMAND Manage containers Commands: attach Attach local standard input, output, and error streams to a running container 进入容器,退出时容器会结束 commit Create a new image from a container's

Docker容器学习梳理-容器硬盘热扩容

docker容器默认的空间是10G,如果想指定默认容器的大小,可以在docker配置文件里自定义,比如配置成--storage-opt dm.basesize=20G,即容器设置成20G:也可以在启动容器的时候指定:# docker -d --storage-opt dm.basesize=20G 在实际生产环境下,对docker容器进行热扩容(动态扩容)是非常重要的一个需求,但是上面的方法需要修改后需要重启docker,无法做到动态给运行容器指定大小. Docker容器动态扩展的优点: 1)不

docker容器从入门到实战0826

##docker容器安装和配置### #docker的git-hub网站(账号rshare,密rshare520):https://github.com/login #docker官网hub仓库(账号flyer520,密码rhsare520):https://hub.docker.com #docker官网文档和镜像:https://docs.docker.com/samples/centos/ #docker官网的容器网络配置:https://docs.docker.com/engine/us

docker容器从入门到实战0826(笔记整理)

##docker容器安装和配置### #docker的git-hub网站(账号rshare,密rshare520):https://github.com/login #docker官网hub仓库(账号flyer520,密码rhsare520):https://hub.docker.com #docker官网文档和镜像:https://docs.docker.com/samples/centos/ #docker官网的容器网络配置:https://docs.docker.com/engine/us

Docker容器基础篇——镜像、容器

一.docker简介 1. 什么是容器? 容器技术是一种虚拟化的方案,与传统虚拟机不同,传统虚拟机是通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上,而容器则是直接运行于操作系统内核之上的用户空间.因此,容器虚拟化也被称为操作系统虚拟化. Docker容器与传统虚拟机的比较,如下表 特性 Docker 虚拟机 启动速度 秒级 分钟级 性能损耗 共享kernel几乎没有性能损耗 通过对于硬件层的模拟,增加了系统调用链路的环节,有性能损耗 系统支持量 上千个 几十个 隔离性 资源限制 完全隔离

docker 容器的mysql主从复制

一. 1.首先拉取docker镜像,我们这里使用5.7版本的mysql:   docker pull mysql:5.7 2.分别启动主从两个容器: docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7(从) docker run -p 3339:3306 --name mysqli -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7(主) 3. 此时可

容器技术Docker 容器操作大总结

Docker实战之容器操作: 新建容器: docker create创建的容器处于停止状态,可以使用docker start命令启动Docker容器. 使用docker run命令,可以创建一个运行中的容器. create命令与容器运行模式相关的选项: -a,--attach=[]                                      是否绑定到标准输出.输入和错误 -a,--detach=true|false                              是否在