1、镜像的使用
2、容器的连接
3、docker仓库管理
1、获取一个新的镜像以及显示本地的镜像并启动一个
docker pull 镜像:获取一个新镜像
docker images :显示本地镜像
docker run -itd 镜像:启动一个镜像
[root@ecs-24bf ~]# docker pull ubuntu:15.10
15.10: Pulling from library/ubuntu
7dcf5a444392: Pull complete
759aa75f3cee: Pull complete
3fa871dc8a2b: Pull complete
224c42ae46e7: Pull complete
Digest: sha256:02521a2d079595241c6793b2044f02eecf294034f31d6e235ac4b2b54ffc41f3
Status: Downloaded newer image for ubuntu:15.10
docker.io/library/ubuntu:15.10
[root@ecs-24bf ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 10 months ago 13.3kB
ubuntu 15.10 9b9cb95443b5 4 years ago 137MB
training/webapp latest 6fae60ef3446 5 years ago 349MB
[root@ecs-24bf ~]# docker run -itd ubuntu:15.10 /bin/bash
996ad1cdda4854fd12ba4be735099bdf64ec2b9fe4d05870cfb96990483b0d7d
2、从搜索镜像、拉取镜像、删除镜像
docker search 镜像名:从网上搜寻需要的镜像
docker pull 镜像名 :从网上拉取镜像下载 docker rmi
镜像名:从本地删除不需要的镜像 [
root@ecs-24bf ~]# docker search httpd
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
httpd The Apache HTTP Server Project 3230 [OK]
centos/httpd-24-centos7 Platform for running Apache httpd 2.4 or bui… 36
centos/httpd 32 [OK]
arm32v7/httpd The Apache HTTP Server Project 9
polinux/httpd-php Apache with PHP in Docker (Supervisor, CentO… 4 [OK]
...
[root@ecs-24bf ~]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
bb79b6b2107f: Pull complete
26694ef5449a: Pull complete
7b85101950dd: Pull complete
da919f2696f2: Pull complete
3ae86ea9f1b9: Pull complete
Digest: sha256:b82fb56847fcbcca9f8f162a3232acb4a302af96b1b2af1c4c3ac45ef0c9b968
Status: Downloaded newer image for httpd:latest
docker.io/library/httpd:latest
[root@ecs-24bf ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 3dd970e6b110 2 weeks ago 138MB
hello-world latest bf756fb1ae65 10 months ago 13.3kB
ubuntu 15.10 9b9cb95443b5 4 years ago 137MB
training/webapp latest 6fae60ef3446 5 years ago 349MB
[root@ecs-24bf ~]# docker rmi bf756fb1ae65
Untagged: hello-world:latest
Untagged: hello-world@sha256:8c5aeeb6a5f3ba4883347d3747a7249f491766ca1caa47e5da5dfcf6b9b717c0
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
Deleted: sha256:9c27e219663c25e0f28493790cc0b88bc973ba3b1686355f221c38a36978ac63
3、通过更改原镜像创建新镜像
docker commit -m=“描述” -a=“镜像作者” 容器ID 创建的容器名:提交一个有某某创建的新容器
docker run -itd 容器名:启动某个容器(-d在后台运行)
[root@ecs-24bf ~]# docker run -it ubuntu:15.10 /bin/bash
root@869bde2db184:/# ls -l
total 64
drwxr-xr-x 2 root root 4096 Jul 6 2016 bin
drwxr-xr-x 2 root root 4096 Oct 19 2015 boot
drwxr-xr-x 5 root root 360 Nov 1 08:46 dev
drwxr-xr-x 1 root root 4096 Nov 1 08:46 etc
drwxr-xr-x 2 root root 4096 Oct 19 2015 home
drwxr-xr-x 8 root root 4096 Sep 13 2015 lib
...
root@869bde2db184:/# mkdir yyt
root@869bde2db184:/# ls -l
...
drwxr-xr-x 1 root root 4096 Jul 22 2016 var
drwxr-xr-x 2 root root 4096 Nov 1 08:46 yyt
root@869bde2db184:/# exit
exit
[root@ecs-24bf ~]# docker commit -m="add yyt" -a="ecs" 869bde2db184 ecs/ubuntu:v2
sha256:f86cd415e44bd5f36af9dabc4bf351983a874572741bde80c0a93276bb8cf0ea
[root@ecs-24bf ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ecs/ubuntu v2 f86cd415e44b About a minute ago 137MB
...
[root@ecs-24bf ~]# docker run -it ecs/ubuntu:v2 /bin/bash
root@346df4b12ae9:/# exit
exit
4、设置镜像标签
docker tag 容器ID 作者名/新标签:创建一个新的标签
[root@ecs-24bf ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ecs/ubuntu v2 f86cd415e44b 16 minutes ago 137MB
httpd latest 3dd970e6b110 2 weeks ago 138MB
ubuntu 15.10 9b9cb95443b5 4 years ago 137MB
training/webapp latest 6fae60ef3446 5 years ago 349MB
[root@ecs-24bf ~]# docker tag f86cd415e44b ecs/ubuntu:v3
[root@ecs-24bf ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ecs/ubuntu v2 f86cd415e44b 18 minutes ago 137MB
ecs/ubuntu v3 f86cd415e44b 18 minutes ago 137MB
httpd latest 3dd970e6b110 2 weeks ago 138MB
ubuntu 15.10 9b9cb95443b5 4 years ago 137MB
training/webapp latest 6fae60ef3446 5 years ago 349MB
1、网络端口映射
docker run -d -P 作者 容器名:创建了一个 python 应用的容器
docker port 容器名 端口:快捷地查看容器端口的绑定情况
-P :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口
默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp
[root@ecs-24bf ~]# docker run -d -P training/webapp python app.py
d09f46081205a09836703664f39599af43b50bac3e179e8ca1ebaa206d679115
[root@ecs-24bf ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d09f46081205 training/webapp "python app.py" 31 seconds ago Up 30 seconds 0.0.0.0:32768->5000/tcp priceless_mcclintock
[root@ecs-24bf ~]# docker run -d -p 5000:5000 training/webapp python app.py
5a573a2d1a969bdfb7f923a462d3160f1304e65247c54ec3504a738c22eaf88f
[root@ecs-24bf ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a573a2d1a96 training/webapp "python app.py" 5 seconds ago Up 3 seconds 0.0.0.0:5000->5000/tcp epic_morse
d09f46081205 training/webapp "python app.py" About a minute ago Up About a minute 0.0.0.0:32768->5000/tcp priceless_mcclintock
[root@ecs-24bf ~]# docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
7f3cd5c5eb2c74a9f13fa6a0190ea5cc789e2e8d03f978bebe96f716f00cbccd
[root@ecs-24bf ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7f3cd5c5eb2c training/webapp "python app.py" 4 seconds ago Up 3 seconds 127.0.0.1:5001->5000/tcp relaxed_napier
5a573a2d1a96 training/webapp "python app.py" 59 seconds ago Up 58 seconds 0.0.0.0:5000->5000/tcp epic_morse
d09f46081205 training/webapp "python app.py" 2 minutes ago Up 2 minutes 0.0.0.0:32768->5000/tcp priceless_mcclintock
[root@ecs-24bf ~]# docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
00f312fd9b1af6719327008d75675965e0236a578434c93a2a3f5403cd0629c6
[root@ecs-24bf ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
00f312fd9b1a training/webapp "python app.py" 5 seconds ago Up 4 seconds 5000/tcp, 127.0.0.1:5000->5000/udp dazzling_bhaskara
7f3cd5c5eb2c training/webapp "python app.py" About a minute ago Up About a minute 127.0.0.1:5001->5000/tcp relaxed_napier
5a573a2d1a96 training/webapp "python app.py" 2 minutes ago Up 2 minutes 0.0.0.0:5000->5000/tcp epic_morse
d09f46081205 training/webapp "python app.py" 4 minutes ago Up 4 minutes 0.0.0.0:32768->5000/tcp priceless_mcclintock
[root@ecs-24bf ~]# docker port epic_morse
5000/tcp -> 0.0.0.0:5000
2、容器命名、新建网络
docker run -d -P --name 命名 容器名:容器的命名( --name 标识来命名容器)
docker network create -d bridge 网络名:创建一个网络 (-d:参数指定 Docker 网络类型,有 bridge、overlay)
docker network ls:展示现有的网络
[root@ecs-24bf ~]# docker run -d -P --name test training/webapp python app.py
d9e17e4c07f81da718632a0b927eeafc0c71f6fb36d9faf2ad8dcde5b2301dd9
[root@ecs-24bf ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d9e17e4c07f8 training/webapp "python app.py" 3 seconds ago Up 3 seconds 0.0.0.0:32769->5000/tcp test
00f312fd9b1a training/webapp "python app.py" 15 minutes ago Up 15 minutes 5000/tcp, 127.0.0.1:5000->5000/udp dazzling_bhaskara
7f3cd5c5eb2c training/webapp "python app.py" 16 minutes ago Up 16 minutes 127.0.0.1:5001->5000/tcp relaxed_napier
5a573a2d1a96 training/webapp "python app.py" 17 minutes ago Up 17 minutes 0.0.0.0:5000->5000/tcp epic_morse
d09f46081205 training/webapp "python app.py" 19 minutes ago Up 19 minutes 0.0.0.0:32768->5000/tcp priceless_mcclintock
[root@ecs-24bf ~]# docker network create -d bridge test-net
a80549796d7d1c28f44fd04c385e7d5cdc1965b673b4ba1c786b06e05414bc32
[root@ecs-24bf ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
4380948bbba2 bridge bridge local
73dfa4a2c606 host host local
ea01efda4738 none null local
a80549796d7d test-net bridge local
3、连接容器
docker run -itd --name 用户名 --network 网络名 容器名:运行容器并且绑定上网络
docker exec -it 用户名 /bin/bash:进如指定容器
apt install iputils-ping:安装ping命令
[root@ecs-24bf ~]# docker run -itd --name test1 --network test-net ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
6a5697faee43: Pull complete
ba13d3bc422b: Pull complete
a254829d9e55: Pull complete
Digest: sha256:fff16eea1a8ae92867721d90c59a75652ea66d29c05294e6e2f898704bdb8cf1
Status: Downloaded newer image for ubuntu:latest
99884137d0e287940ef0751fc4beda8116c847acf674d819d7dd774ca1d69a4d
[root@ecs-24bf ~]# docker run -itd --name test2 --network test-net ubuntu /bin/bash
536dfd44f29974911521ada4924d7e36a5d883fa689d92ee802d30dbf4ab94d7
[root@ecs-24bf ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
536dfd44f299 ubuntu "/bin/bash" 15 seconds ago Up 15 seconds test2
99884137d0e2 ubuntu "/bin/bash" 7 minutes ago Up 7 minutes test1
...
[root@ecs-24bf ~]# docker exec -it test1 /bin/bash
root@99884137d0e2:/# apt-get update
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
...
root@99884137d0e2:/# apt install iputils-ping
Reading package lists... Done
Building dependency tree
Reading state information... Done
...
[root@ecs-24bf ~]# docker exec -it test2 /bin/bash
root@536dfd44f299:/# apt-get update
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
...
root@536dfd44f299:/# apt install iputils-ping
Reading package lists... Done
Building dependency tree
Reading state information... Done
...
root@536dfd44f299:/# ping test1
PING test1 (172.18.0.2) 56(84) bytes of data.
64 bytes from test1.test-net (172.18.0.2): icmp_seq=1 ttl=64 time=0.069 ms
64 bytes from test1.test-net (172.18.0.2): icmp_seq=2 ttl=64 time=0.059 ms
64 bytes from test1.test-net (172.18.0.2): icmp_seq=3 ttl=64 time=0.063 ms
4、配置DNS
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
启动容器的 DNS 会自动配置为 114.114.114.114 和 8.8.8.8
查看容器的 DNS 是否生效:
docker run -it --rm ubuntu cat etc/resolv.conf
docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu
–rm:容器退出时自动清理容器内部的文件系统
-h HOSTNAME 或者 -hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts
–dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名
–dns-search=DOMAIN: 设定容器的搜索域
[root@ecs-24bf ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: yytwy
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@ecs-24bf ~]# docker logout
Removing login credentials for https://index.docker.io/v1/
docker search 镜像名:搜索镜像
docker pull 镜像名:拉取镜像