Docker(4)命令(docker,镜像,运行,容器)

2020-04-14

Docker操作

# 启动docker
systemctl start docker
#设置docker开机自启
systemctl enable docker
#重启docker
systemctl restart docker
#关闭docker
systemctl stop docker

镜像操作

从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为:

docker pull [选项] [Docker Registry 地址[:端口号](这个有默认的)/]仓库名[:标签]

常见的选项(option):

-name为启动后的容器起一个名字
-p配置宿主机和容器的端口映射,格式(宿主机:容器)。宿主机端口接受的数据,转发给容器端口
-v配置宿主机和容器的目录映射,格式(宿主机:容器)。容器保存在目录的数据会保存在宿主机目录中,容器读取目录中的数据也会从宿主机目录读取, 如果不配置目录映射,容器关闭后会清空产生的所有数据。
-it以交互模式启动容器,通常搭配 /bin/bash 参数使用 (进入容器内部)。 容器启动后自动进入容器内部系统,在输入的命令就是在容器内系统执行的命令,使用 exit 退出容器,回到宿主机,容器会自动关闭。
-d以后台运行模式启动容器
--rm退出容器后,删除容器
bashshell脚本的处理器,使用了才能用shell

可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。

  • Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
  • 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。

查看本地镜像列表docker images [option]

删除镜像:

注意:删除镜像前要先删除容器

  • 删除所有没用的悬空镜像
docker image prune
  • 删除镜像比如:
docker rmi 5a9061639d0a

容器操作(镜像运行之后是容器)

示例 1:

docker run \	#运行容器,可以当作创建容器的命令,每这样一次,就会自动创建一个容器
--name mynginx \	#容器名字
-p 8070:80 \	#用户访问宿主机8070端口,宿主机把8070收到的数据转发给80端口
#操纵某(宿主机的/root/docker/nainx/log或者容器的/var/log/nginx)一个目录都会发生变化
-v /root/docker/nainx/log:/var/log/nginx \ 
#以交互式的形式运行容器
-it \
docder-registry:5000/nginx \
/bin/bash	#docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash

解释:

  • 以交互模式运行 docker-registry:5000/nginx 镜像,启动容器后打开 /bin/bash 程序
  • 容器名字叫做:mynginx
  • 容器的 80 端口绑定在宿主机的 8070 端口
  • 容器的 /var/log/nginx 目录绑定在宿主机的 /root/docker/nginx/log 目录

运行镜像之后镜像成为容器

#使用-p给一个运行的端口号
#tomcat后边跟的版本号,表示运行这个版本
docker run -p 8080:8080 tomcat:9-jre8

docker run 就是运行容器的命令,我们这里简要的说明一下上面用到的参数。

查看容器列表

docker ps			#没有选项则查看运行中的容器列表
docker ps -a		#全部容器列表(未运行+运行中)
docker ps -a -q		#查看所有状态的容器编号(CONTAINER ID)

查看的列表内容:
| CONTAINER ID | 容器(id)唯一标识 |
| --- | --- |
| IMAGE | 生成容器的镜像 |
| COMMAND | 容器启动后执行的命令 |
| CREATED | 容器的创建时间 |
| STATUS | 状态,Up(运行中)Exited(未运行) |
| PORTS | 端口映射 |
| NAMES | 容器名字 |

启停命令

docker start/stop/kill/restart CONTAINER 启动/停止/强制停止/重启容器
CONTAINER 可以使用NAMES或者CONTAINER ID
使用CONTAINER ID的时候可以只输入唯一的前n位

比如:

docker start 3148

删除容器:
docker rm CONTAINERID/NAME #删除未运行的容器

docker rm 3148

进入容器内部:docker exec -it fCONTAINERID/NAME /bin/bash #进入容器内部(进入后台运行的容器)

docker exec -it fe3a3a74a982 /bin/bash	 #进入容器内部(进入后台运行的容器)
	
nginx -s stop #进入容器内部后关闭nginx
exit  #从容器内部退出到宿主机,不会对容器产生影响,不会关闭容器

所有文件写入操作,都应该使用数据卷(Volume),或者绑定宿主目录,在这些地方的读写会跳过容器存储层,直接对宿主或者网络存储发生读写,其稳定性能更高。


标题:Docker(4)命令(docker,镜像,运行,容器)
作者:张范
地址:http://misterzhang.top/articles/2020/04/12/1586689326757.html