目錄
卸載Docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
安裝Docker前安裝必要工具
yum install -y yum-utils device-mapper-persistent-data lvm2
添加軟件信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum緩存
yum makecache fast
安裝Docker-ce
yum -y install docker-ce
啓動Docker後臺服務
systemctl start docker
Docker鏡像加速
編輯/etc/docker/daemon.json文件,下述示例代碼中的URL可能無效,可從 https://cr.console.aliyun.com/cn-shenzhen/mirrors 獲取
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
刪除Docker-ce
yum remove docker-ce
rm -rf /var/lib/docker
查看Docker命令選項
docker
查看子命令用法
docker <command> --help
測試運行hello-world
docker run hello-world
運行ubuntu
docker run ubuntu:15.10 /bin/echo "Hello world"
-
docker: Docker 的二進制執行文件。
-
run:與前面的 docker 組合來運行一個容器。
-
ubuntu:15.10指定要運行的鏡像,Docker首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。
-
/bin/echo "Hello world": 在啓動的容器裏執行的命令
運行交互式的容器
docker run -i -t ubuntu:15.10 /bin/bash
-
-t:在新容器內指定一個僞終端或終端。
-
-i:允許你對容器內的標準輸入 (STDIN) 進行交互。
後臺模式啓動容器
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
在輸出中,我們沒有看到期望的"hello world",而是一串長字符
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
這個長字符串叫做容器ID,對每個容器來說都是唯一的,我們可以通過容器ID來查看對應的容器發生了什麼。
首先,我們需要確認容器有在運行,可以通過 docker ps 來查看
在容器內使用docker logs命令,查看容器內的標準輸出:
docker logs 2b1b7a428627
查看正在運行的容器
docker ps
停止容器
docker stop xxx
xxx可以是容器ID,也可以是容器名。
查看容器內的標準輸出
docker logs 2b1b7a428627
下載鏡像
docker pull hello-world
將容器使用的端口映射到主機上
啓動容器時加一個參數,-P
docker run -d -P ......
配置指定的端口:
docker run -d -p 5000:5000 ......
查看端口映射情況
docker port 7a38a1ad55c6
查看WEB應用程序日誌
docker logs -f 7a38a1ad55c6
查看WEB應用程序容器的進程
docker top determined_swanson
重啓容器
docker restart xxx
移除容器
docker rm determined_swanson
查看鏡像列表
docker images
更新鏡像
運行並進入容器
docker run -t -i ubuntu:15.10 /bin/bash
更新
apt-get update
退出容器
exit
提交
docker commit -m="has update" -a="mirsual" e218edb10161 mirsual/ubuntu:v2
-
-m:提交的描述信息
-
-a:指定鏡像作者
-
e218edb10161:容器ID
-
runoob/ubuntu:v2:指定要創建的目標鏡像名
查看鏡像
docker images
構建鏡像
創建 Dockerfile 文件,加入內容類似:
FROM centos:6.7
MAINTAINER Fisher "[email protected]"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
第一條FROM,指定使用哪個鏡像源
RUN 指令告訴docker 在鏡像內執行命令,安裝了什麼。。。
然後執行如下命令構建鏡像:
docker build -t runoob/centos:6.7 .
-
-t :指定要創建的目標鏡像名
-
. :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑
使用 nginx 鏡像
docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx
-
-p 80:80:將容器的80端口映射到主機的80端口
-
--name mynginx:將容器命名爲mynginx
-
-v $PWD/www:/www:將主機中當前目錄下的www掛載到容器的/www
-
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:將主機中當前目錄下的nginx.conf掛載到容器的/etc/nginx/nginx.conf
-
-v $PWD/logs:/wwwlogs:將主機中當前目錄下的logs掛載到容器的/wwwlogs