目录
卸载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 "fisher@sudops.com"
-
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