docker常见命令

【容器】

1.创建容器

 docker create -it --name f_container centos:latest

create:关键字

centos:latest:即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。另外,Docker会检查本地是否存在指定的镜像;。不存在就从公有仓库下载

-it:是两个参数,-i:interactive容器具有交互功能,-t:容器将提供伪终端。

--name:指定生成的容器的名字,允许空,如果不指定会自动生成。

2.查看所有容器

docker ps -a

-a  指所有,不要则为当前。

 

3.开启容器

 docker start ce4ce0f150e4

最后的是前面语句查询出来的容器Id号。或者加上查询的Name

 

4.进入容器

docker exec -it ce4ce0f150e4 bash

这里的docker id也可以换成name

 

 

5.一键 创建/开启/进入  容器  (重点)  =》(create+start+exec)

docker run -it centos:latest  /bin/bash

如果指定了端口号

docker run -it -p 7001:8001 --name f_container centos:latest  /bin/bash

如果想让docker在后台以守护态的形式存在

docker run -it -d --name f_container centos:latest

 加了-d表示进入守护态。此时没有 /bin/bash  也就是没进容器,所以可以通过

docker  exec -it f_container bash

进入

 

6.退出容器

exit

 

7.停止容器

docker stop [docker_id]

 

8.复制文件

 $ docker cp 宿主机绝对路径  容器id:路径

 

 

【安装常用软件】

yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop unzip telnet

 

【docker依赖】

需要CentOS7,且不低于3.10

uname -r

查看当前CentOS版本

 

【更新缓存】 linux系统中

yum clean all && yum makecache

 

【列出可用的可安装的docker版本】

yum list docker-ce showduplicates | sort -r

 

 

【指定docker 源】

curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

这里的代码意思是 将阿里云服务器的docker库文件 下载到文件夹里的docker-ce.repo文件

然后需要刷新缓存,就可以利用上面的与来查看可用的docker-ce版本了

 

【配置仓库源】

一般仓库源都是国外的,下载速度比较慢,这边需要配置成阿里云的仓库

首选创建文件

mkdir -p /etc/docker

创建一个空文件(如果没有则创建,有则无事发生)

touch /etc/docker/daemon.json

编辑

vim /etc/docker/daemon.json

 填入以下命令

{
      "registry-mirrors":[
           "https://8xpk5wnt.mirror.aliyuncs.com"
    ]  
}

修改之后,重启daemon

systemctl daemon-reload
systemctl enable docker
systemctl restart docker

 

【查看docker进程】

ps -ef|grep docker

解析:

比如出现了以下语句

root      11462      1          0      17:33         ?           00:00:00    /usr/bin/dockerd

分别表示:

UID        PID       PPID     C      STIME      TTY          TIME           CMD

ps:将某个进程显示出来

-A  显示所有程序。 

-e  此参数的效果和指定"A"参数相同。

-f  显示UID,PPIP,C与STIME栏位。 

grep命令是查找

中间的|是管道命令 是指ps命令与grep同时执行

这条命令的意思是显示有关Apachejetspeed有关的进程

UID PID PPID C STIME TTY TIME CMD

各相关信息的意义:
UID 程序被该 UID 所拥有
PID 就是这个程序的 ID 
PPID 则是其上级父程序的ID
C CPU 使用的资源百分比
STIME 系统启动时间
TTY 登入者的终端机位置
TIME 使用掉的 CPU 时间。
CMD 所下达的指令为何

 

【安装nginx】

docker pull  nginx

搜索仓库中的nginx,会显示stars和官方official标志

docker search nginx

 

【显示已拉取的所有镜像】

docker image ls

 或者是

docker  images

 

【删除镜像】

docker rmi  [img_id]

注意:这里是rmi,删除容器是rm。

 

【docker运行nginx】

docker run -d -p 80:80 nginx

-d表示以守护态后台运行,-p表示端口映射  宿主机的80端口映射容器的80端口。

此时可以直接 用    [宿主机IP]:80  来访问容器内的80端口,也就是nginx的起始页面。

 

【查看宿主机IP】

ip  a

找到ens33对应的inet地址

 

【注意】

docker  ps  -a  是查看所有容器,包括正在运行和已经退出的容器。

而 docker ps   只显示正在运行的容器

 

【docker的生命周期,整个流程以及命令】

 

 

【清屏】

屏幕上满是命令,想重新展开空白屏幕。输入

clear

 

 

 

【查看docker的信息】

docker info

可以看到

 

 有一个存放路径:

直接

ls /var/lib/docker

就可以看到里面的所有文件夹,然后继续使用  ls指令

最终达到镜像库里面 

ls /var/lib/docker/image/overlay2/imagedb/content/sha256/ -l

里面的Id号和 docker  images里面的Id号对应

 

 

 

【临时开启一个容器,退出后删除】

docker  run -it  --rm centos:7.8.2003 bash

也就是在进入命令之前加入了  --rm 命令

然后使用

exit

退出后,docker ps -a找不到下载的centos容器。

 

 

【docker 只显示镜像Id】

docker  images -q

或者

docker images --format "{{.ID}}--{{.Repository}}"

使用  --format  参数

 

【批量删除镜像、容器】

docker rmi `docker images -aq`

容器

docker rm `docker ps -aq`

 

 

【保存镜像到某一个文件】

docker image save nginx > /opt/nginx.tgz

这里使用了 image  save指令,将nginx导入到opt文件夹下的nginx.tgz压缩文件。

大于号表示重定向,本该是将结果显示在屏幕,这里重定向到压缩文件。并且是覆盖的形式,如果是 >> 则为追加的形式

然后可以使用

ls /opt/ -l

显示出文件,如下图

 【导入本地镜像】

上面已经将nginx镜像导入了/opt/nginx.tgz。现在删除nginx镜像,然后导入本地的镜像

docker  image load -i /opt/nginx.tgz

 

 

【容器的运行必须至少有一个前台进程】

1.容器内的进程必须在前台运行,否则容器会退出

2.容器什么事情也不做也会挂掉,必须有一个前台进程在运行

比如

直接使用

docker run centos

会产生很多个容器,但容器内没有程序再跑,所以直接挂掉了

所以必须在run 命令后面加上-it 表示进入容器并产生交互行为。一般结尾加bash。也可以是其他,比如 ping  baidu.com

docker run -it centos ping baidu.com

 

 

【实时查看容器日志】

docker logs -f   [container_id]

 

 

【查看容器的具体参数信息】

docker  container inspect   [container_id]

container inspect  容器监视

 

【查看容器的端口映射】

docker port  [container_id]

比如

首先运行一个nginx 容器

 

 然后就可以查看端口映射关系

表示容器内的80端口,映射到宿主机的85端口

 

然后在本地使用     [host_id]:85   就可以访问到nginx的欢迎界面

 

【容器的自定义端口映射和随机端口映射】

上面可以看到

docker  run -d --name c_nginx -p 85:80 nginx

是自定义的宿主机85对应容器80,使用的是  -p  命令。

如果想随机端口,则为

docker run -d --name c_nginx -P nginx

这里是大写命令  -P

 

 

【提交容器生成镜像】

想要生成自定义的镜像,比如一般最新的CentOS镜像是一个纯空壳,甚至没有vim。所以,我想要生成一个带有vim的镜像。

首先是开启一个容器

docker run -it 8b797d41a71c bash

利用最新版CentOS生成一个容器,然后进入,然后下载vim

yum  install -y vim

退出容器后在

docker commit b16cbb91a754 adu/centos-vim

利用docker Commit   [container_id]   [u_name]/[tool_name]生成镜像

最后进入这个镜像就可以使用vim编辑txt文件,而一般的Centos镜像,进去之后是无法使用vim的。

 

posted @ 2023-03-05 01:04  RookieCoderAdu  阅读(49)  评论(0)    收藏  举报