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]
可以從https://hub.docker.com/中查看image的tag
# 列出本地所有鏡像 docker images -a
# 從鏡像啓動容器 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
詳細命令介紹:https://cloud.tencent.com/developer/article/1438222
通過 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