Docker的命令 解析
docker镜像
### 搜索镜像
docker search nginx
docker image seaech nginx
### 拉取镜像
#-- 默认的-(最近的)
docker pull nginx == docker pull nginx:latest == docker image pull nginx:latest
#-- 指定版本-(最小的)
docker pull nginx:alpine == docker image pull nginx:alpine
### 查看镜像
docker images == docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx alpine 0f0eda053dc5 2 weeks ago 43.3MB
nginx latest 5ef79149e0ec 2 weeks ago 188MB
alpine latest 324bc02ae123 6 weeks ago 7.8MB
centos 7 eeb6ee3f44bd 2 years ago 204MB
### 删除镜像
docker rmi nginx == docker image rm nginx == docker image rm nginx:latest
docker rmi nginx:alpine == docker rmi 0f0eda053dc5
### 导出镜像
docker save nginx:alpine -o /tmp/nginx.dtgz
docker image save nginx:alpine -o /tmp/nginx.dtgz
docker save nginx:alpine > /tmp/nginx.dtgz
docker save nginx >/tmp/nginx.dtgz #(打包所有的nginx镜像在一个文件中)
### 导入镜像
docker load -i /tmp/nginx.dtgz
docker image load < /tmp/nginx.dtgz
### 镜像加标签 (添加一个新的标签)
docker tag 0f0eda053dc5 nginx:min
[root@docker01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx alpine 0f0eda053dc5 2 weeks ago 43.3MB
nginx min 0f0eda053dc5 2 weeks ago 43.3MB
### 查看镜像的详细信息
docker inspect nginx:min
----------查看启动默认命令 -----------
"Cmd": [
"nginx",
"-g",
"daemon off;"
----------- 查看占用端口 ------------
"ExposedPorts": {
"80/tcp": {}
},
----------- 查看文件映射 ----------
docker容器的操作
选项 |
作用 |
--name |
自定义容器名 |
-d |
放后台运行 |
-it |
分配一个交互式的终端 |
-p |
端口映射 |
-P |
映射随机端口 |
-v |
数据卷映射 |
-e |
env指定环境变量 |
--restart=always |
设置容器开机自启(跟随docker启动) |
--link=mysql |
指定另一个容器的名字,则可以通信类似于dns解析 |
######## 容器的运行原则 ########
1. 一个容器最好只做一件事
2. 容器运行必须保证容器内的PID为1的进程一直存在
PID为1的进程是谁决定的?
1.docker run运行容器后加的命令
2.如果在运行容器时没有加任何命令,则以容器镜像中CMD中的命令作为PID为1的进程
#### 查看正在运行的容器
docker ps == docker container ps
#### 查看所有的容器
docker ps -a == docker container ps -a
#### 查看正在运行的容器的ID号
docker ps -q
#### 查看所有容器的ID号
docker ps -qa
#### 运行一个容器
docker run [选项]... 镜像 [command]
docker run -p80:80 -p90:90 -it centos:7 /bin/bash
##
--- run 帮我们做了什么事情 -----
1)拉镜像 (docker pull nginx:alpine)
2)创建镜像 (docker create nginx:alpine)
3)启动镜像 (docker start 7e32a25b073b)
4)关闭镜像 (docker stop 7e32a25b073b)
#### 删除容器
docker rm 7e32a25b073b #(没有关闭容器会报错)
docker rm -f 7e32a25b073b 0f0eda053dc5 # (不关闭容器 强制删除)
#### 连接导一个容器
docker exec -it 7e32a25b073b /bin/bash
docker exec -it 7e32a25b073b /bin/sh
#### 查看容器日志
docker logs -f 7e32a25b073b
docker logs -f 容器ID
docker logs -f 容器名
#### 容器的文件传输(可以上传文件和目录)
--- 上传 ---
docker cp /etc/passwd 7e32a25b073b:/etc/
--- 下载 ---
docker cp 7e32a25b073b:/etc/passwd ./
######### 容器的端口映射 ########
-p:端口映射
• -p 宿主机端口:容器端口
• -p 宿主机IP:宿主机端口:容器端口
• -p 宿主机IP::容器端口(随机端口)
• -p 宿主机端口:容器端口/udp
• -p 宿主机IP::容器端口/udp 使用宿主机的10.0.0.103这个ip地址的随机端口的udp协议映射容器的udp端口
• -p 81:80 –p 443:443 可以指定多个-p
• -p 80-88:80-88 端口范围映射
[root@docker03 ~]# docker run -p80-88:80-88 -d nginx:alpine
f9a6971985b6e22f3daef52a06d7aeda050f1350f36520e1458979c39e771f20
########### 容器的文件映射 ###########
-v:数据卷映射 volume
-v 宿主机绝对路径:容器绝对路径
-v 容器目录 #创建一个随机卷,来持久化容器的目录下的数据,适合保存变化的数据
-v 卷名:容器目录 #创建一个固定名字的卷,来持久化容器的目录下的数据,适合数据共享
docker run --name h5 -p 80:80 -v /code/h5_games:/usr/share/nginx/html -d nginx:alpine