本文使用的运行环境

Ubuntu 16.04.5 LTS

全新安装Docker

参考:https://docs.docker.com/install/linux/docker-ce/ubuntu/

安装依赖包

sudo apt-get update
sudo  apt-get  install  apt-transport-https  ca-certificates  curl  software-properties-common

添加Docker的官方GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

设置stable仓库

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu  $(lsb_release -cs) stable"

安装Docker

sudo apt-get update
sudo apt-get install docker-ce

测试是否可用

sudo docker run hello-world

配置用户组

安装过程已经自动添加了docker组,执行docker run等命令需要root权限,普通用户需要加入docker组才能在普通权限下执行docker。添加方法如下:

sudo usermod -aG docker $USER

然后重新登录当前账户。

配置容器使用桥接网络(macvlan)

docker下面的bridge和传统VM的bridge不是一个东西,反而macvlan的bridge模式符合传统VM的桥接网络 这篇博文比较了传统VM和docker中的网络配置的异同(此bridge非彼bridge)链接

配置方案如下

Step1:创建macvaln网络

docker network create -d macvlan --subnet=10.8.8.0/24 --gateway=10.8.8.1 -o parent=enp0s3 macvlan_net

parent参数指定桥接使用的物理网卡,最后一个参数是给网络起的名字,可以改成其他的,子网和网关要符合物理网卡所在网域的环境。 注意:需要在宿主机中将物理网卡设置为混杂模式!!!

Step2:创建容器,并使用Step1创建的网络

docker run -tid --network macvlan_net  --name test_container ubuntu:xenial

Step3:检查配置是否正确

docker container inspect test_container

Step4:attach 容器,开始使用

docker attach test_container

常用的一些操作

列出所有镜像

docker image ls

列出所有运行中的容器

docker container ls
docker ps

列出所有容器(含stopped)

docker container ls -a

查看镜像的历史(成长记录)

docker history  镜像名称/镜像hash

从镜像创建并启动一个容器

docker run -ti 镜像名称  //-t -i参数都要加上,不然无法正常使用tty

启动一个已经存在的容器

docker start -i 镜像名字/ID前缀

Attach一个正在运行的容器(docker ps 看到的容器)

#注意:敲完这个命令,什么显示都没有,要自己再敲一下Enter才能看到提示符
docker attach 镜像名字/ID前缀

从容器生成镜像(容器数据永久化的一种方式)

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

上传镜像到仓库中

docker longin //登陆,如果没有账号的话,去docker官网注册o
docker tag 镜像  username/repository:tag   //tag可省略,缺省值为latest
docker push username/repository:tag //tag可省略,默认为本地全部tag

删除镜像

docker image rm username/repository:tag