Contents
  1. 1. 免sudo运行
  2. 2. 容器内网络问题
  3. 3. 慎用latest标签
  4. 4. 替换更新源
  5. 5. docker建wordpress
  6. 6. 常用命令

免sudo运行

问题:

默认安装完 docker 后,每次执行 docker 都需要运行 sudo 命令,非常浪费时间影响效率

解决方案:

将用户加入该docker的group内,重新打开终端。
Add the connected user “${USER}” to the docker group.

1
2
sudo gpasswd -a ${USER} docker
sudo service docker restart

容器内网络问题

问题:

Docker Daemon默认给Docker Container的DNS设置为8.8.8.8和8.8.4.4,但在国内这两个DNS服务不稳定,由此影响到网络。

解决方案:

  1. 临时方案:使用docker run命令启动容器的时候,设定–dns参数,如:
1
docker run -it --dns=172.20.1.4 ubuntu
  1. 全局修改:以上临时方案仅适用于docker run命令,docker build因为没有dns参数所以不能效仿。

编辑/etc/default/docker添加–dns参数到Docker Daemon的DOCKER_OPTS

1
2
3
4
sudo vi /etc/default/docker
# 末尾添加 DOCKER_OPTS="--dns 172.20.1.4"
sudo service docker stop
sudo service docker start

慎用latest标签

latest并不是永久赋予某一特定Docker镜像的标签,在t1使用latest镜像,应用容器运行正常;t2使用同一个Dockerfile来build镜像再运行应用容器,失效。
比如t1时ubuntu镜像的latest标签于ubuntu:14.04,t2时该latest标签属于ubuntu:16.04。因此Docker镜像建议使用指定的tag

替换更新源

1
2
3
sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/' /etc/apt/sources.list
apt-get update
apt-get install vim -y

docker建wordpress

1
2
docker run --name wp-mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
docker run --name my-wordpress --link wp-mysql:mysql -p 8080:80 -d -e WORDPRESS_DB_PASSWORD=root wordpress

常用命令

镜像管理

  • docker search ubuntu 搜索镜像
  • docker pull ubuntu:1604 获取指定版本镜像
  • docker images 列出本地所有镜像
  • docker rmi ubuntu:1604 删除镜像
  • docker build -t nginx:v3 . 使用Dockerfile构建镜像,并指定标签
  • docker history nginx:v2 查看镜像历史

容器运行

  • docker run ubuntu:1604 创建并运行一个容器
  • docker run 其他参数
    • -name testContainer 指定容器名称
    • -p 80:80 指定端口映射
    • -P 随机端口,可通过docker port ID/name 查看
    • -it 交互
    • -d 后台运行,可通过docker attach ID/name连接容器

容器管理

  • docker ps -a 查看所有容器
  • docker rm $(docker ps -a -q) 删除所有容器
  • docker start ID/name
  • docker stop ID/name
  • docker attach ID/name
  • docker logs ID/name
  • docker logs -f ID/name 持续日志流
  • docker diff ID/name 查看容器变化
  • docker commit –author manhua –message 修改了默认网页 ID/name nginx:v2 将容器保存为image