THE DOCKER BOOK — James Turnbull

《第一本Docker书》—— 李兆海、刘斌、巨震 译

基本操作:
开启docker守护进程:
sudo service docker start
查看docker程序位置:
whereis docker
检查docker是否就绪:
sudo docker info
运行docker-ubuntu:
sudo docker run -i -t ubuntu /bin/bash
###-i:保证容器中的STDIN开启,-t:为新创建的容器分配一个tty伪终端
###两者保证新创建的容器能提供一个交互式shell

更新apt/安装软件
容器命名
sudo docker run --name hausa_ubuntu -i -t ubuntu /bin/bash
重新启动已经停止的容器
sudo docker start hausa_ubuntu/ID
查看正在运行的容器及基本信息
sudo docker ps (-a包括已停止的)
重新附着到容器
sudo docker attach hausa_ubuntu/ID
创建守护式容器
sudo docker run --name hausa -d ubuntu /bin/bash -c "while true; do echo hello; sleep 1; done"
###此时ps,可以看到正在运行的hausa,如果不执行-c,则容器仍会运行,但不会看到
查看容器内部在干什么
sudo docker logs (-ft监控) hausa
查看容器内的进程
sudo docker top hausa
在容器内部运行进程
sudo docker exec -d hausa touch hausa.txt
sudo docker exec -t -i hausa /bin/sh
停止守护式容器
sudo docker stop hausa
出错导致停止运行时自动重启
sudo docker run --restart=always --name aaaaa -d ubuntu
删除某容器
sudo docker rm hausa
获取详细的容器信息
sudo docker inspect hausa_ubuntu
查看特定的某一项信息
sudo docker inspect --format='{{.State.Running}}' hausa_ubuntu(或-f)
删除所有容器
sudo docker rm [反引号]sudo docker ps -a[反引号]

使用镜像和仓库
列出所有本地镜像
sudo docker images
拉取镜像
sudo docker pull ubuntu
在dockerhub上查找镜像
sudo docker search hello
构建并commit镜像
sudo docker run -i -t ubuntu /bin/bash
apt update
apt install inetutils-ping
apt-get install net-tools
exit
sudo docker commit b73ec63f89cc hausa/ubuntu
commit时可以用-m提供提交信息,也可以用--auther指定作者信息
也可以:为其增加标签
使用Dockerfile构建镜像
mkdir web_ubuntu
cd web_ubuntu
touch Dockerfile
vim Dockerfile
Version: 0.0.1
FROM ubuntu:14.04
MAINTAINER Hausa_ "hausahan@gmail.com"
RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "nginx"]
RUN echo 'Hi, This is a web server' \
> /usr/share/nginx/html/index.html
EXPOSE 80
cd ..
sudo docker build /home/hausa/docker/web_ubuntu/
-t=”hausa/web_ubuntu:0.0.1″
使用–no-cache确保构建过程中不使用缓存
也可以指定一个github地址构建镜像,具体百度
Dockerfile的其他指令见:如何用Dockerfile构建镜像
查看镜像
sudo docker images
从新镜像启动容器
sudo docker run -d -p 80 --name web_ubuntu hausa/web_ubuntu:0.0.1 \
nginx -g "daemon off;"

也可以在80前用:间隔,指定主机的端口来直接绑定
使用sudo docker port web_ubuntu查看端口分配情况,即可通过此端口访问服务

将镜像推送到dockerhub
sudo docker push hausa/web_ubuntu
删除一个不需要再使用的镜像
sudo docker rmi hausa/ubuntu
运行/使用自己的docker registry,见:https://github.com/docker/docker-registry
让Docker容器互连
1: --link
sudo docker run -d -p 80 --name web_ubuntu hausa/web_ubuntu:0.0.1 \
nginx -g "daemon off;"

sudo docker run --name ubuntu --link web_ubuntu:web_server -it ubuntu
在宿主机扫描或进入web机查看,再通过ubuntu机ping,可以ping通