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