Docker
安装
1 | sudo pacman -S docker #安装docker |
docker镜像加速
1 | vim /etc/docker/daemon.json |
1 | { |
1 | 其他镜像 |
使用
例子
1
2docker pull archlinux #拉取archlinux:latest 镜像
docker run --name arch -it archlinux #交互式运行一个arch容器镜像使用
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47列出镜像列表
docker images
REPOSITORY 镜像的仓库原
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像创建的时间
SIZE 镜像的大小
获取一个新镜像
docker pull ubunt
查找容器
docker search httpd
NAEM名字
DESCRIPTION 镜像的秒数
OFFICIAL 是否是docker官方发布的
stars github stars
AUTOMATED 自动构建
删除镜像
docker rmi hello-world
docker rmi image-ID
创建镜像
方式1 从已经构建的容器中更新镜像,并且提交这个镜像
docker commit -m="has update" -a="author" container-ID image-NAME:TAG
方式2 使用Dockerfile指令来构建一个镜像
cat Dockerfile
---
FROM centos:6.7
MAINTAINER Fisher "fisher@163.com"
RUN /bin/echo 'root:12345' | chpasswd
RUN useradd tom
RUN /bin/echo 'tom:12345' | chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8"" > /etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
---
docker build -t tom/centos:6.7 .
-t 指定要创建的镜像名
. Dockerfile所在目录
设置镜像标签
docker tag image-ID tom/centos:dev #多了一个新标签容器使用
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54查看Docker客户端的所有命令选项
docker
了解指定docker命令
docker stats --help
启动容器
docker run -it ubuntu /bin/bash
-i 交互式操作
-t 终端
ubuntu 镜像
/bin/bash 交互的shell
docker run -itd --name ubuntu-test ubuntu /bin/bash
-d 后台运行
查看容器
docker ps -a
-a 查看所有的容器,包括停止的容器
启动一个容器
docker start container-ID/NAME
停止一个容器
docker stop container-ID/NAME
重启一个容器
docker restart container-ID/NAME
进入容器
docker attach container-ID/NAME
exit后 容器停止
docker exec -it container-ID/NAME /bin/bash
exit后 容器不停止
导入和导出容器
docker export container-ID/NAME > ubuntu.tar
cat ubuntu.tar | docker import - test/ubuntu:v1
删除一个容器
docker rm -f container-ID/NAME
运行一个web应用
docker pull training/webapp
docker run -d -P training/webapp python app.py
-P 将容器内部使用的网络端口随机映射到我们使用的主机上
docker pull nginx
docker run -d -p 8080:80 --name nginx-test nginx:latest
-p 8080:80 指定端口映射 主机8080 容器80
查看网络端口映射
docker port container-ID/NAME
查看WEB应用日志
docker logs -f container-ID/NAME
查看WEB应用程序的进程
docker top container-ID/NAME
检查WEB应用程序
docker inspect container-ID/NAME容器连接
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
29
30
31
32网络端口映射
docker run -d -P image-ID/NAME
docker run -d -p 8080:80 --name container-NAME image-ID/NAME
docker run -d -p 127.0.0.1:80 image-ID/NAME
默认tcp端口
docker run -d -p 127.0.0.1:5000:5000/udp image-ID
容器互联
新建网络
docker network create -d bridge test-net
-d 指定网络类型 bridge 桥接 /overlay
docker run -itd --name test1 --network test-net ubuntu /bin/bash
docker run -itd --name test2 --network test-net ubuntu /bin/bash
容器 test1中 能直接 ping test2
配置DNS
所有的容器
vim /etc/docker/daemon.json
---
{
"dns":[
"114.114.114.114",
"8.8.8.8"
]
}
---
指定容器DNS
docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu
--rm 容器退出时,自动清理容器内部的文件系统
-h HOSTNAME 设定容器的主机名
--dns=IP_ADDRESS 添加DNS服务器
--dns-search=DOMAIN 设定容器的搜索域仓库管理
1
2
3
4
5
6
7
8
9
10DOCKER 官方仓库Docker Hub https://hub.docker.com 免费注册一个Docker账号
登录和退出
docker login
docker logout
搜索官方仓库中的镜像
docker search ubuntu
拉取镜像
docker pull ubuntu
推送镜像
docker push NAME:TAG