Docker指令&& 容器使用
镜像images
- 获取镜像
1
dock pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
- 运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ docker run -it --rm ubuntu:18.04 bash
root@e7009c6ce357:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
docker run 就是运行容器的命令
-it
:这是两个参数, 一个是-i
交互式操作,一个是’-t’ 终端,我们这里打算 进入bash
执行一些命令并- –rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 –rm 可以避免浪费空间
- ubuntu:18.04:这是指用 ubuntu:18.04 镜像为基础来启动容器。
- bash:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是 bash
- exit 退出了这个容器
列出镜像
1 | docker images |
挂载硬盘
1 | docker run ... -v 主机目录:容器中的目录 ... |
复制文件
1 | docker cp 源目录 目标目录 |
常用命令
1 | docker images -----> 查看已下载的镜像 |
Dockerfile 参数
FROM:指定基础镜像,必须为第一个命令
MAINTAINER: 维护者信息
ENV:设置环境变量
RUN:构建镜像时执行的命令
ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
EXPOSE:指定于外界交互的端口
VOLUME:用于指定持久化目录
WORKDIR:工作目录,类似于cd命令
案例
使用MySQL镜像
1 | docker run -d --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.5 |
命令说明:
- –name=mysql:为容器指定一个名称为mysql
- -p 3306:3306:将容器的(后面的3306) 3306 端口映射到主机的(前面的3306) 3306端口。
- -d:后台运行容器,并返回容器ID。
- -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码为123456。
- mysql:5.5 要使用的镜像的名称
网络 指令
查看 网络列表docker network ls
当我们在使用docker-compose构建服务时,会自动创建一个新的网络如下
查看这个网络中所有的容器ip以及其他信息docker network inspect 网络id
新建一个网络$ docker network create -d bridge my-net
运行容器连接到my-net 网络docker run --rm -it --network my-net my_flask:1.0 bash