docker从入门到放弃

docker容器

2021-03-11  本文已影响0人  我傻笑你跑掉

容器(containe)是镜像的运行时实例.

容器

如果镜像是一个模版,那么容器(containe)就是镜像的运行时实例.

为什么要使用容器

与传统的虚拟机相比,容器有如下优势

启动容器

使用docker run -option image:tag command命令 command参数来启动一个容器, 如:

docker run -it mysql /bin/echo hello world!

上述命令会启动一个容器并输出


启动容器

option可选列表如下

与容器交互

使用-it参数可以启动一个伪终端

docker run -it test:v1
-it开启伪终端

容器后台运行

容器会在执行完成command或者退出bash后终止,使用-d参数可以指定容器后台运行,此处用mysql镜像启动一个容器

docker run -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

成功启动后会返回这个容器的id

防止容器退出

docker容器同时只能管理一个进程,如果这个进程退出那么容器也就退出了.例子

docker run -it --name test1 centos:latest /bin/sh

启动一个名为test1的centos镜像,然后输出exit并回车,然后docker ps -a发现这个容器已经退出

628d9bded677   centos:latest   "/bin/sh"   7 seconds ago   Exited (0) 4 seconds ago             test1

exit命令结束了docker管理的/bin/sh进程,因而无论是否这个容器中有没有其他进程在后台运行,容器都会退出.

换句话说,docker run指定的容器启动时运行的程序结束,那么容器就会退出.

如何避免呢,可以在执行上述命令后,按CTRL+P+Q切出,此时容器并不会退出.

docker run -it --name test1 centos:latest /bin/sh

然后按CTRL+P+Q切出,再查看.

b30c4510a76c   centos:latest   "/bin/sh"   1 minutes ago   Up 1 minutes                         test1

查看容器运行状态

使用docker ps或者docker container ls命令查看运行状态,与linuxps 命令非常相似

ps

这里docker ps的命令包括:

如果要查看所有容器,使用docker ps -a

ps -a

查款容器日志

使用docker logs container_id|name命令来查看容器日志.

容器重命名

在创建一个容器的时候,docker后自动对其进行重命名,也可以使用--name来指定,以mysql为例

docker run -e MYSQL_ROOT_PASSWORD=123456 --name mysql_server -d mysql:5.6
--name 重命名容器

登陆到容器

-d指定容器后台运行后,可以使用两种方式登陆到容器.

 docker exec -it mysql_server /bin/bash
exec

检视容器

使用docker inspect container_id|container_name命令来查看检视容器,通常会包含一些非常有用的信息

docker inspect mysql_server
检视容器信息

设置容器端口

启动mysql后,可以使用-p 宿主端口:容器端口参数映射容器端口与宿主机端口,宿主端口和容器端口设置成不一样的只
比如12345:54321表示宿主的12345端口映射到容器的54321端口.

上面已经启动了一个mysql容器,容器中mysql进程监听的是容器的3306端口,由于没有指定端口映射,在宿主机是无法访问容器中的mysql.

如果想要外部访问,启动一个新的mysql容器并绑定到宿主机的3306端口.

docker run -e MYSQL_ROOT_PASSWORD=123456 --name mysql_server_new -p 3306:3306 -d mysql:5.6
设置端口映射
可以使用docker port container_id/name来查看一下容器的端口映射
docker port mysql_server_new

3306/tcp -> 0.0.0.0:3306

还可以使用docker ps,可以看到PORTS显示 3306->3306,测试一下

宿主机连接mysql

注:此处表述有误,无法访问并不是完全无法访问,使用iptable工具映射过去也可以,比较麻烦而已.

关闭容器

使用docker container start/stop/restart container_id来启动或停止一个容器

除此之外,还可以使用docker -kill container_id 来强行停止一个容器

删除容器

使用docker rm container_i来删除一个容器,下面id为226db43edaedab3d300443cd的容器.

delete

导入导出

使用docker export container_id > localfile导出容器快照为本地文件.

docker export mysql_server_new > mysql.tar

使用docker import file/url image_name:tag来将一个容器快照导入为本地快照

docker import mysql.tar mysql_import_test:v1
import
mysql容器的快照被导入成了一个本地镜像.

可以使用docker commit命令将本地容器快照导出为一个本地镜像

docker commit -a "zhangsheng" -m "mysql image" mysql_server_new test_mysql:v11111
commit
commit参数如下
上一篇下一篇

猜你喜欢

热点阅读