docker和docker-compose的安装使用

Docker 从 1.13 版本之后采用时间线的方式作为版本号,分为社区版 CE 和企业版 EE,社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。

社区版按照 stable 和 edge 两种方式发布,每个季度更新 stable 版本,如 17.0617.09;每个月份更新 edge 版本,如17.0917.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值