Docker 从 1.13
版本之后采用时间线的方式作为版本号,分为社区版 CE
和企业版 EE
,社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。
社区版按照 stable
和 edge
两种方式发布,每个季度更新 stable
版本,如 17.06
,17.09
;每个月份更新 edge
版本,如17.09
,17.10
。
Centos安装docker
#安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置稳定的Docker 仓库,之后将从仓库安装和更新 Docker
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker
sudo yum install docker-ce
# Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
查看docker服务是否启动 ps aux |grep dockerd
启动docker服务 service docker restart
# 从远程仓库拉取镜像 docker pull [imageName][:Tag]
可以从Docker Hub中查看image的tag
# 列出本地所有镜像 docker images -a
# 删除镜像 docker rmi -f <imageid>
# 从镜像启动容器 docker run -it --rm -p 8989:8080 [imageName]
# 查看容器
docker ps :列出当前所有正在运行的container
docker ps -l :列出最近一次启动的container
docker ps -a :列出所有的container(包含历史,即运行过的container)
docker ps -q :列出最近一次运行的container ID
# 再次启动容器
docker start/stop/restart <container> #:开启/停止/重启container
docker start [container_id] #:再次运行某个container (包括历史container)
# 根据启动的容器生成镜像
docker commit -a usrname [cotainerID] [repository:tag]
# 将某个容器的文件系统导出到文档中 docker export [containerID] > filename.tar
# 根据容器导出文档生成镜像 docker import [filename|url|-] [repository:tag]
# 删除容器 docker rm [containerID]
# 进入到容器后台:
docker inspect --format "{{ .State.Pid }}" [containerID]
该命令返回某个容器的PID
nsenter --target XXX --mount --uts --ipc --net --pid
其中XXX为某个容器的PID
# 退出容器后台 ctrl+D
# 使用Dockfile构建image
docker build -t imagename:tag [Dockerfile所在路径]
# 宿主机与容器间的文件拷贝
docker cp
# .bashrc_docker的使用
查看容器pid: docker-pid [containerID]
查看容器IP:docker-ip [containerID]
进入容器:docker-enter [containerID]
# 将.bashrc_docker写入到.bashrc并执行
echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc
# Some useful commands to use docker.
# Author: yeasy@github
# Created:2014-09-25
#.bashrc_docker定义了docker-pid和docker-ip两个命令,为了方便查看pid和ip信息。
alias docker-pid="sudo docker inspect --format '{{.State.Pid}}'"
alias docker-ip="sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}'"
#the implementation refs from https://github.com/jpetazzo/nsenter/blob/master/docker-enter
function docker-enter() {
#if [ -e $(dirname "$0")/nsenter ]; then
#Change for centos bash running
if [ -e $(dirname '$0')/nsenter ]; then
# with boot2docker, nsenter is not in the PATH but it is in the same folder
NSENTER=$(dirname "$0")/nsenter
else
# if nsenter has already been installed with path notified, here will be clarified
NSENTER=$(which nsenter)
#NSENTER=nsenter
fi
[ -z "$NSENTER" ] && echo "WARN Cannot find nsenter" && return
if [ -z "$1" ]; then
echo "Usage: `basename "$0"` CONTAINER [COMMAND [ARG]...]"
echo ""
echo "Enters the Docker CONTAINER and executes the specified COMMAND."
echo "If COMMAND is not specified, runs an interactive shell in CONTAINER."
else
PID=$(sudo docker inspect --format "{{.State.Pid}}" "$1")
if [ -z "$PID" ]; then
echo "WARN Cannot find the given container"
return
fi
shift
OPTS="--target $PID --mount --uts --ipc --net --pid"
if [ -z "$1" ]; then
# No command given.
# Use su to clear all host environment variables except for TERM,
# initialize the environment variables HOME, SHELL, USER, LOGNAME, PATH,
# and start a login shell.
#sudo $NSENTER "$OPTS" su - root
sudo $NSENTER --target $PID --mount --uts --ipc --net --pid su - root
else
# Use env to clear all host environment variables.
sudo $NSENTER --target $PID --mount --uts --ipc --net --pid env -i $@
fi
fi
}
Docker Compose
详细命令介绍:docker-compose - 腾讯云开发者社区-腾讯云
通过 Docker-Compose 用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。
Docker Compose 工作原理图
安装方法一:
#下载
sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#安装
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose version
安装方法二:
#安装pip
yum -y install epel-release
yum -y install python-pip
#确认版本
pip --version
#更新pip
pip install --upgrade pip
#安装docker-compose
pip install docker-compose
#查看版本
docker-compose version
Cannot connect to the Docker daemon
Got permission denied
Docker pull时代理配置
1. 创建 dockerd 相关的 systemd 目录,并添加代理配置文件
1.1 配置文件
#创建一下目录和文件
mkdir /etc/systemd/system/docker.service.d/
vim /etc/systemd/system/docker.service.d/http-proxy.conf
#添加一下内容
[Service]
Environment="HTTP_PROXY=http://192.168.2.199:8118"
Environment="HTTPS_PROXY=http://192.168.2.199:8118"
# 下面是不走代理的时候,可以不加。有私有仓库时,可以用来加私有仓库
# Environment="NO_PROXY=localhost,127.0.0.1"
1.2 重启docker
systemctl daemon-reload
systemctl restart docker
1.3 检查代理
# 可以看到刚才配置的代理
docker info | grep -i proxy