CKA笔记整理(三)

前言

容器中必须运行一个进程,但是我们可以指定运行的进程。如果没有指定容器的进程,则会运行镜像里CMD所指定的进程。可通过如下命令查看CMD所指定的进程,

有很多对象,如镜像、容器、网络等,如需查看其属性,通用语法如下:

docker 属性类型  inspect  对象名称
docker image inspect nginx
docker containerd  inspect c1
#可直接写docker inspect c1
docker network  inspect  net1

一、管理容器

查看容器

docker ps
#查看正在运行的容器
docker ps -a
#查看所有容器

创建容器

docker run 镜像名

容器正常运行时,状态为up。如果CMD指定的是bash进程,则进程只会存在一瞬间,想要bash进程一直存在就需给其一个终端。

docker run -it hub.c.163.com/library/centos
#-it参数,退出该容器时容器会自动挂掉,如果想该容器在后台运行需:
docker run -dit  hub.c.163.com/library/centos 
#docker run -dit --restart=always hub.c.163.com/library/centos
--restart=always 为重启docker时该容器自动启动

进入到容器为attach,不进入到容器为detach,创建容器时不进入到容器加-d。docker中-d和-it可一起使用,nerdctl等其他的不可以一起使用。

扫描二维码关注公众号,回复: 16016175 查看本文章

使用--name为容器起名,否则容器名随机分配。

docker run -dit --restart=always hub.c.163.com/library/centos sleep 10d
#sleep 10d指该容器运行十天
#加-e可指定变量
docker run -dit --restart=always -e xx=AA -e yy=bb hub.c.163.com/library/centos
进入容器后就会有指定的变量

为容器添加端口

docker run -d -p N:M
docker run -d -p M 
#M容器端口,N宿主机端口,如果只写容器端口则随机指定宿主机端口

可通过nerdctl port 容器名 来查看容器的端口及指定的宿主机端口

停止容器、启动容器、重启容器

nerdctl stop xxx (容器名)   #停止容器
nerdctl  start xxx  (容器名) #启动容器
nerdctl  restart  xxx  (容器名) #重启容器

查看容器内运行的进程

nerdctl  top  xxx (容器名)

查看容器内的输出(日志)

nerdctl logs xxx (容器名)
nerdctl logs -f xxx  (容器名)
#-f为查看不退出,有新的日志会持续显示

在容器中执行命令

nerdctl exec xxx (容器名) ls  /root (要执行的命令)
#容器外执行命令
nerdctl exec -it  xxx (容器名) bash
#进入容器,输入exit退出

nerdctl暂不支持attach进入容器

可以将宿主机内的东西复制到容器中

 也可将容器内文件拷贝到宿主机来

nerdctl  cp  web1:/etc/hosts  hosts

数据卷

在容器中添加的任何数据都会被写入容器层,无论容器重启停止运行启动,数据都会在。但只要删除了容器,容器层也会被删除。如果希望数据永久保存(容器删除后还存在),就需要做数据卷。

-v M
#只写M表示容器的目录,宿主机则随机生成一个挂载点
-v N:M
#N表示宿主机目录
例如:
nerdctl run -it --name=a1 --rm   -v  /data nginx bash
#--rm表临时容器 -v 数据卷 没写宿主机挂载点则随机生成,可通过inspect查看mounts栏查看宿主机挂载点
nerdctl run -it --name=a1 --rm   -v  /xxx:/data:ro nginx bash
#ro表只读形式挂载,容器里只能读该文件夹

需根据应用的实际情况来判断挂载点

nginx-/usr/share/nginx/html/

mysql-/var/lib/mysql

apache-/var/www/html

在使用mysql镜像时,需要指定一些变量:

MYSQL_ROOT_PASSWORD  root密码
MYSQL_USER  创建普通用户
MYSQL_PASSWORD  普通用户的密码
MYSQL_DATABASE  创建一个库

部署MySQL容器并挂载到宿主机的/db目录,然后在宿主机安装客户端mariadb

通过如下命令查看容器db的ip地址

进入数据库

查看数据库并创建新的数据库

 查看宿主机的/db下,发现aa已经存储

如果将该容器删除并重新创建数据库容器并挂载/db,登录数据库后会发现aa库依然可以连接到。

猜你喜欢

转载自blog.csdn.net/qq_52676760/article/details/128804216