注:运行环境Ubuntu18.04.1
1 下载镜像
(1)在互联网情况下
# docker pull 镜像名:版本
sudo docker pull mysql:5.6.48
(2)无互联网情况下
# 先在有互联网的电脑上下载镜像文件,由于在docker hub上无法直接手动下载镜像文件,因此只能在具有docker环境下使用pull命令下载
sudo docker pull mysql:5.6.48
# 存出镜像文件
# docker save -o 保存的镜像压缩包 镜像名:版本号
sudo docker save -o mysql_5.6.48.tar mysql:5.6.48
# 载入镜像
# docker load -i 镜像压缩包
sudo docker load -i mysql_5.6.48.tar
(3)查看镜像文件
sudo docker images
(4)删除镜像
# docker rmi 镜像名/镜像编号
sudo docker rmi mysql:5.6.48
2 操作容器
(1)创建容器和运行容器
# 首选方法,创建并运行容器
# docker run 参数 镜像名/镜像编号 命令
# --name表示容器名称 -i表示输入输出 -t表示伪终端 -d表示后台运行
# -p表示映射端口"宿主机端口:容器端口"
# -v表示数据卷"宿主机目录:容器目录"
# /bin/bash是容器内shell(如果没有/bin/bash可换成/bin/sh),也可以不要
sudo docker run --name my_test -itd -p 5000:5000 -v /home/mason/webapp/my_test:/home/my_test python:3.6.5 /bin/bash
# 快速创建并启动,系统自动设定名称,没有-d容器退出后,容器停止
sudo docker run -it python:3.6.5 /bin/bash
# 方法二,先创建容器
# docker create 参数 镜像名/镜像id 命令
sudo docker create -it python:3.6.5
# 再启动容器
# docker start 容器名/容器id
sudo docker start 36f9696c942e
(2)进入容器
# docker exec 参数 容器名/容器 命令
sudo docker exec -it my_test /bin/bash
# 退出容器
输入:exit
或者:Ctrl+d
(3)停止容器
# docker stop 容器名/容器 命令
sudo docker stop my_test /bin/bash
(4)删除容器
# docker rm 容器名/容器编号,注意:删除镜像是rmi,容器是rm
sudo docker rm my_test
(5)查看容器
# 查看所有容器
sudo docker ps -a
# 查看容器内详情
# sudo docker inspect 容器名/容器id
sudo docker inspect my_test
# 查看容器内的进程
sudo docker top my_test
(6)容器复制数据
# 宿主机向容器复制
# docker cp 宿主机数据 容器名:容器目录
sudo docker cp /home/mason/data/hello.txt my_test:/home
# 容器向宿主机复制,反转路径即可
# docker cp 容器名:容器目录 宿主机数据
sudo docker cp my_test:/home/hello.txt /home/mason/data
(7)容器导入导出
# 容器导出
# docker export -o 容器压缩包名 容器名:版本号
sudo docker export -o my_test.tar my_test:v1
# 容器导入
# docker import 容器压缩包名
sudo docker import my_test.tar
(8)将容器导出为镜像
# 使用export导出的镜像只能用import导入(丢失镜像历史),使用save导出的镜像只能有load导入(数据保存完整),使用“commit”可以实现容器和镜像的转换,-m是说明信息,-a是用户信息
# docker commit 容器名 镜像名:版本号
sudo docker commit -m "my test " -a "yyp" my_test my_test:v1
3 容器互联
将mysql容器和flask容器链接一起。
(1)创建mysql容器
# docker run 参数 镜像名/镜像编号 命令
# -e表示为容器设置环境变量
sudo docker run --name test_mysql -itd -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.48
(2)创建web服务器并链接mysql容器
# --link表示连接容器"name:alias(链接的容器名:别名,name和alias可以相同)",也可仅仅跟要链接的容器名
# 简单创建链接
# sudo docker run -it --link test_mysql:mysql python:3.6.5 /bin/bash
# 完整创建链接
sudo docker run --name my_test -itd -p 5000:5000 -v /home/mason/webapp/my_test:/home/my_test --link test_mysql python:3.6.5 /bin/bash
(3)查看是否链接通
# docker exec -it 容器名 ping 容器名
sudo docker exec -it my_test ping test_mysql
4 Docker网络配置
(1) 配置网络
# 创建自己的网络
# --subnet表示网段是192.168.18.0/255.255.255.0,如果24变为16表示255.255.0.0
# --driver表示设置网络模式为bridge
# --gateway表示设置网关为192.168.18.1
# dev_network表示自己创建的网络名
sudo docker network create --driver bridge --subnet=192.168.18.0/24 --gateway=192.168.18.1 dev_network
# 查看docker网络模式,Docker默认网络模式是bridge网络
sudo docker network ls
# 删除网络
sudo docker network rm dev_network
# 将指定容器连接到指定网络
# connect表示连接,断开用disconnect
# dev_network表示网络名
# my_alpine表示容器名
sudo docker network connect dev_network my_alpine
(2) 使用新网络创建容器
# 创建容器时添加网络参数即可
# --net指定在dev_network网络中
# --ip表示设置ip地址为192.168.18.11
sudo docker run --name my_alpine --hostname myalpine.com --net dev_network --ip 192.168.18.11 -d --restart always --privileged=true alpine:3.8