1. 基本命令 1 2 3 4 5 6 7 8 docker info docker version docker system df docker login https://hub.elihe.io docker logout
2. 镜像 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 docker images docker image ls docker search nginx docker pull nginx docker tag nginx hub.elihe.io/mylib/nginx:v0.1 docker push hub.elihe.io/mylib/nginx:v0.1 docker run --name myweb -p 80:80 -d nginx docker commit -p myweb hub.elihe.io/mylib/nginx:v0.2 docker history hub.elihe.io/mylib/nginx:v0.2 docker save -o myweb0.2.tar hub.elihe.io/mylib/nginx:v0.2 docker load -i myweb0.2.tar docker export myweb | gzip > myweb.tar.gz docker import myweb.tar.gz hub.elihe.io/mylib/nginx:v0.3 docker rmi -f hub.elihe.io/mylib/nginx:v0.3 docker image prune docker image prune -a
2.1 特殊镜像 2.1.1 虚悬镜像(dangling image) 仓库名、标签均为 的镜像 (docker pull/build 时,原有的镜像名被占用,会导致此种情况)
1 2 3 4 5 $ docker image ls -f dangling=true REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 00285df0df87 5 days ago $ docker image prune
2.1.2 中间层镜像 为了加速镜像构建、重复利用资源,Docker 会利用 中间层镜像
3. 容器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 docker create --name myweb -p 80:80 --cpu-shares=1024 nginx docker start myweb docker stop myweb docker pause myweb docker unpause myweb docker ps docker kill myweb docker rm myweb docker run --name test -it alpine /bin/sh docker attach test docker run --name myweb2 -p 8080:80 -d nginx docker exec -it myweb2 /bin/sh docker logs -tf --tail=10 myweb2 docker inspect myweb2 docker port myweb2 docker top myweb2 docker stats myweb2 docker cp myweb2:/usr/share/nginx/html/50x.html . docker cp index.html myweb2:/usr/share/nginx/html/
3.1 什么是守护式容器?
能够长期运行
没有交互式会话
适合运行应用程序和服务
3.2 CPU 限制
-c, --cpu-shares
: 1024 means 100% of the CPU
--cpuset-cpus
: 使用那些 CPU
1 2 docker run --cpu-shares=512 docker run --cpuset-cpus=0,2,4
3.3 内存限制
1 docker run -it -m 300M ubuntu /bin/sh
3.4 访问宿主机设备限制 1 2 3 4 5 6 7 8 docker run --rm -it --cap-add SYS_ADMIN --device /dev/fuse sshfs docker run -it --device=/dev/ttyUSB0 ubuntu /bin/sh docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb ubuntu /bin/sh
4. 网络 1 2 3 4 5 6 7 8 9 10 11 12 13 docker network create docker network rm docker network connect docker network disconnect docker network ls NETWORK ID NAME DRIVER SCOPE 5edf46553116 bridge bridge local 3f0e974cff7d host host local 016c2058322a none null local docker network inspect bridge
5. Volumes 1 2 3 4 5 docker volume create docker volume rm docker volume ls docker volume inspect
6. 常用命令总结
7. 简单示例 7.1 MySQL 1 2 3 4 5 docker pull mysql:5.7 docker run --name mysqlsrv -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7 docker exec -it mysqlsrv /bin/bash
7.2 容器中部署静态网站 Nginx部署流程
创建映射80端口的交互式容器
安装Nginx
安装文本编辑器vim
创建静态页面
修改Nginx配置文件
运行Ngix
验证网站访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 docker run --name web -p 8080:80 -it ubuntu /bin/bash root@ecd4887cf28d:/ apt-get update apt-get install -y nginx vim mkdir -p /var/www/html echo '<h1>Nginx in Docker</h1>' > /var/www/html/index.htmlvi /etc/nginx/sites-enabled/default server { root /var/www/html; } nginx ps -ef CTRL-P, CTRL-Q docker port web curl http://127.0.0.1:8080 docker stop web docker start -i web docker exec web nginx