概述

官网

文档

仓库

安装

  1. 安装yum和配置镜像

    1
    2
    3
    4
    5
    6
    7
    # 安装yum
    sudo yum install -y yum-utils

    # 添加阿里云镜像
    sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  2. 安装docker

    1
    2
    # 安装最近稳定版docker
    yum install docker-ce docker-ce-cli containerd.io
  3. 启动docker

    1
    systemctl start docker
  4. 测试docker

    1
    2
    3
    4
    5
    docker run hello-world

    #以下信息表示你的docker安装成功
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
  5. 卸载docker

    1
    2
    3
    4
    5
    6
    # 卸载docker
    yum remove docker-ce docker-ce-cli containerd.io

    # 删除镜像
    rm -rf /var/lib/docker
    rm -rf /var/lib/containerd

阿里云镜像加速

docker run的运行流程图

image-20220407111402318

docker与虚拟机对比,为什么快?

docker 的常用命令

帮助命令

1
2
3
4
docker version
docker info
docker 命令 --help # 帮助命令

帮助文档

命令

docker hub

镜像命令

docker images 查看本地所有镜像

1
docker images

docker search 镜像 搜索镜像

1
2
#这个搜索是和在docker hub  中搜索是一项的
docker search mysql

docker pull 镜像 [:tag] 下载镜像

1
2
#默认下载是latest版本
docker pull mysql:5.7

docker rmi 镜像name/id [-f] 删除镜像

1
2
3
4
# 不加版本号,默认是latest
docker rmi -f mysql
docker rmi -f mysql hello-world # 删除多个镜像
docker rmi -f $(docker images -aq) # 删除所有镜像

容器命令

docker run [参数] image 创建并启动容器

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run -it centos /bin/bash		#以交互的方式启动容器

[root@localhost /]# docker run -it centos /bin/bash
[root@9dc8ce07f368 /]# ls # @9dc8ce07f368 是容器id
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@9dc8ce07f368 /]# exit #退出并删除容器
exit
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

#ex1
docker run -d -p=3344:80 --name=nginx nginx

exit 退出容器

1
exit

ctrl + p +q 退出容器,但不删除容器

docker ps 查询容器

1
2
3
docker ps		#查询正在运行的容器
docker ps -a #查询所有的容器,运行+历史运行的容器
docker ps -q #显示容器id

docker rm 删除容器

1
2
3
docker rm containerid	#删除的容器必须停止运行
docker rm $(docker ps -aq) # 删除所有容器
docker ps -aq|xargs docker rm # linux 管道传参

启动和停止容器

1
2
3
4
docker start #启动容器
docker restart #重启容器
docker stop #停止容器
docker kill #强制停止容器

常用的其他命令

查看日志

1
2
3
4
5
# 运行容器
docker run --name test -d centos /bin/sh -c "while true; do $(echo date); sleep 1; done"

# 查看日志
docker logs -tf -n 2 --until=2s containerid

查看容器中的进程

1
2
3
4
5
6
7
docker top bc63cfe835fb

[root@localhost /]# docker top bc63cfe835fb
UID PID PPID C STIME TTY TIME CMD
root 123674 123652 0 10:14 ? 00:00:00 /bin/sh -c while true; do date; sleep 1; done
root 124989 123674 0 10:23 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
[root@localhost /]#

查看容器中的元数据

1
docker inspect bc63cfe835fb

进入正在运行的容器

1
2
3
4
5
6
#进入后,开启一个新的终端
docker exec -it bc63cfe835fb /bin/bash

#进入后,进入正在执行的终端
docker attach bc63cfe835fb

从容器传递文件到主机上

1
2
3
docker cp containerid:path 宿主机上path
docker cp test:/home/wangzhe.txt /home/test

查看容器的运行状况

1
2
3
docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
5895b696ec89 tomcat 0.22% 128.3MiB / 2.727GiB 4.59% 15kB / 138kB 2.34MB / 0B 36

补充命令

镜像重命名

1
docker tag imageid updateinfo:tag

镜像打包与加载

1
2
3
docker save -o test.tar 15296797459/diycentos:1.0

docker load

查看容器网络

1
docker network

可视化

portainer 官网

安装

1
2
3
4
5
6
docker pull portainer/portainer-ce
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

#9000 是可视化界面的访问地址

Docker 镜像

修改保存镜像

提交修改后的容器为新的镜像

对于下载的镜像修改后,保存为新的镜像,类似于快照

1
2
3
4
5
6
7
8
9
10
11
12
docker commit -a="author" -m="comonent" containerid new_image_name:tag  
[root@localhost test]# docker commit -a="wangzhe" -m="add a new web app" 5895b696ec89 tomcat_prime:1.0
sha256:156c35decf5d5ea65156111c2bbc2e56930d0f56d0d56520fa047c81cbb1179e
[root@localhost test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
#tomcat_prime 1.0 156c35decf5d 5 seconds ago 684MB
tomcat latest b00440a36b99 6 days ago 680MB
nginx latest 12766a6745ee 9 days ago 142MB
portainer/portainer-ce 2.11.1 ed396c816a75 8 weeks ago 280MB
portainer/portainer-ce latest ed396c816a75 8 weeks ago 280MB
hello-world latest feb5d9fea6a5 6 months ago 13.3kB
centos latest 5d0da3dc9764 6 months ago 231MB

容器数据卷

挂载数据卷

1
[root@localhost test]# docker run -it --name centos7 -v /home/test:/home centos /bin/bash

实战:docker 安装mysql

1
2
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql --name mysql -e MYSQL_ROOT_PASSWORD=343621  mysql:latest
# 挂载配置文件和数据文件

具名和匿名挂载

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
#具名挂载
docker run --name nginx05 -d -P -v juming-nginx:/etc/nginx nginx

# 查询数据卷,匿名数据卷是随机字符串,具名数据卷是有名字的
[root@localhost conf.d]# docker volume ls
DRIVER VOLUME NAME
local 071c733fcd2db97f0aee68cf338d2ec49f344670b029cd6173c8b247dee33736
local 6694db8ec1e0347998c2b744c40fa4cce16490600da539ca6759c9b54eb0e5af
local a4ca0c940bb15e60c655a7d97753d2745783a3db3a6687ec16b4dd8acee86449
local juming-nginx
local portainer_data
# 查看卷详情
[root@localhost conf.d]# docker volume inspect juming-nginx
[
{
"CreatedAt": "2022-04-11T16:30:14+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
"Name": "juming-nginx",
"Options": null,
"Scope": "local"
}
]
# Mountpoint 是数据卷在宿主机上的位置

##数据卷挂载:
#具名挂载
#匿名挂载
#指定路径挂载

## 指定宿主机读取权限
:ro readonly
:rw readwrite
docker run --name nginx05 -d -P -v juming-nginx:/etc/nginx:ro nginx
docker run --name nginx05 -d -P -v juming-nginx:/etc/nginx:rw nginx

dockerFile

dockerfile 就是用来创建镜像的

dockerFile构建镜像时进行卷挂载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 编写dockerfile  文件
# 加的挂载卷,在根目录中
FROM centos

VOLUME ["v01", "v02"]

CMD echo "----end-----"

CMD /bin/bash

# 执行创建命令
# -f 文件位置
# -t 创建的镜像名:版本号
# 必须要加上 .
docker build -f dockfile1 -t wangzhe/centos:1.0 .

#在宿主机中卷是匿名数据卷
1. 使用 docker inspect container 找mount
2. 使用 docker volume inspect vid 找到挂载路径
3.

数据卷容器

多个容器之间同步数据

1
--volumes-from containerid

mysql数据共享

1
2
docker run --name mysql01 -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=343621 mysql:latest
docker run --name mysql01 -d -p 3311:3306 --volumes-from mysql01 -e MYSQL_ROOT_PASSWORD=343621 mysql:latest

dockerfile

dockerfile 指令

  • 所有指令必须大写
  • 指令从上到下执行
  • 每条指令都是一层镜像
1
2
3
4
5
6
7
8
9
10
11
12
FROM container[centos,nginx]		#声明父镜像
MAINTAINER 姓名+邮箱 #声明维护者
RUN #镜像构建的时候执行的一些命令
ADD #添加其他镜像,tomcat,jdk,nginx之类的压缩包,会自动解压
WORKDIR #工作目录,进入bash后的所在目录【centos默认是/】
VOLUME #挂载的目录
EXPOSE #暴露的端口配置
CMD #启动容器的时候执行,只会执行最后一条cmd命令,可以被替换但不能被追加
ENTRYPOINT #指定容器启动的时候执行的命令,可以追加命令
ONBUILD #当构建一个被继承的dockfile时,会执行
COPY #类似于add,将我们的文件拷贝到镜像中去
ENV #构建的时候设置的环境变量,构件时传递的参数

构建my-centos

在基础镜像上添加 vim和ipconfig功能,体验dockerfile的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
FROM centos
MAINTAINER wangzhe<2546972682@qq.com>

ENV MYPATH /usr/local

WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo ----end----
CMD /bin/bash

#构建
docker build -f dockerfile-centos -t dockerfile-centos:1.0 .

#工作目录 和 ifconfig命令可以使用
[root@localhost test-dockfile]# docker run -it --name dockfilecentos 23376f473200
[root@536088d44218 local]# pwd
/usr/local
[root@536088d44218 local]# ifconfig

CMD 与 ENTRYPOINT 区别

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
cmd  会在运行容器时运行最后一条命令,可以被替换,但不能追加
entrypoint 会在运行容器时运行,可以在后面追加命令

#cmd 执行 ls -a命令
CMD ["ls","-a"]

[root@localhost test]# docker run 0d1a612596fa
.
..
.dockerenv
bin
dev
etc
home
。。。

##添加 -l 参数
[root@localhost test]# docker run 0d1a612596fa -l
docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.
##需要在后面添加完整的命令
[root@localhost test]# docker run 0d1a612596fa ls -al
total 0
drwxr-xr-x. 1 root root 6 Apr 12 07:37 .
drwxr-xr-x. 1 root root 6 Apr 12 07:37 ..
-rwxr-xr-x. 1 root root 0 Apr 12 07:37 .dockerenv
lrwxrwxrwx. 1 root root 7 Nov 3 2020 bin -> usr/bin
drwxr-xr-x. 5 root root 340 Apr 12 07:37 dev
drwxr-xr-x. 1 root root 66 Apr 12 07:37 etc
drwxr-xr-x. 2 root root 6 Nov 3 2020 home
lrwxrwxrwx. 1 root root 7 Nov 3 2020 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Nov 3 2020 lib64 -> usr/lib64
drwx------. 2 root root 6 Sep 15 2021 lost+found
drwxr-xr-x. 2 root root 6 Nov 3 2020 media
drwxr-xr-x. 2 root root 6 Nov 3 2020 mnt
drwxr-xr-x. 2 root root 6 Nov 3 2020 opt
dr-xr-xr-x. 250 root root 0 Apr 12 07:37 proc
dr-xr-x---. 2 root root 162 Sep 15 2021 root
drwxr-xr-x. 11 root root 163 Sep 15 2021 run
lrwxrwxrwx. 1 root root 8 Nov 3 2020 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Nov 3 2020 srv
dr-xr-xr-x. 13 root root 0 Apr 11 07:11 sys
drwxrwxrwt. 7 root root 171 Sep 15 2021 tmp
drwxr-xr-x. 12 root root 144 Sep 15 2021 usr
drwxr-xr-x. 20 root root 262 Sep 15 2021 var

entrypoint命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost test]# docker run 1dc871c9c046
.
..
.dockerenv
bin
dev
etc
home
。。。。
[root@localhost test]# docker run 1dc871c9c046 -l
total 0
drwxr-xr-x. 1 root root 6 Apr 12 07:39 .
drwxr-xr-x. 1 root root 6 Apr 12 07:39 ..
-rwxr-xr-x. 1 root root 0 Apr 12 07:39 .dockerenv
lrwxrwxrwx. 1 root root 7 Nov 3 2020 bin -> usr/bin
。。。。。

实战tomcat

dockerfile文件以Dockerfile命名,是标准的名字,在构建的时候就不需要加-f

# tomcat 目录

1
2
3
4
5
6
7
8
9
10

#需要准备tomcat和jdk的压缩文件,使用add命令添加时会自动解压
[root@localhost tomcat]# ll
总用量 155024
drwxr-xr-x. 9 root root 220 4月 12 16:41 apache-tomcat-10.0.20
-rw-r--r--. 1 root root 11915655 4月 12 16:38 apache-tomcat-10.0.20.tar.gz
-rw-r--r--. 1 root root 653 4月 12 16:50 Dockerfile
drwxr-xr-x. 8 10143 10143 273 12月 16 03:30 jdk1.8.0_321
-rw-r--r--. 1 root root 146815279 4月 12 16:36 jdk-8u321-linux-x64.tar.gz
-rw-r--r--. 1 root root 7 4月 12 16:31 readme.txt

#Dockerfile文件

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
[root@localhost tomcat]# cat Dockerfile 
FROM centos:centos7

MAINTAINER wangzhe<2546972682@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD apache-tomcat-10.0.20.tar.gz /usr/local/
ADD jdk-8u321-linux-x64.tar.gz /usr/local

RUN yum -y install vim

ENV MYPATH /usr/local

WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_321
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-10.0.20
ENV CATALINA_BASH /usr/local/apache-tomcat-10.0.20
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-10.0.20/bin/startup.sh && tail -F /usr/local/apache-tomcat-10.0.20/bin/logs/catalina.out

镜像构建及运行

1
2
3
4
5
6
7
8
9
10
11
12
# 构建镜像不用添加-f
docker build -t diy-centos:1.0 .

# 运行镜像
docker run -d -p 9090:8080 --name wangzhetomcat -v /home/admin/build/tomcat/test:/usr/local/apache-tomcat-10.0.20/webapps/test \
> -v /home/admin/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-10.0.20/logs diy-centos:1.0

# 在挂载test目录中添加项目信息

# 测试地址
192.168.112.128:9090
192.168.112.128:9090/test

发布镜像

发布到 hub.docker.com

1.登录网站

1
docker login -u account -p password

2.push

1
2
3
4
5
6
7
8
[root@localhost .docker]# docker push 15296797459/diycentos:1.0
The push refers to repository [docker.io/15296797459/diycentos]
174b635a5058: Pushed
9f7ffe7837ee: Pushed
34ee798fa05a: Pushed
e7f006c9c590: Pushed
174f56854903: Pushed
1.0: digest: sha256:6876bab1fe0fdc9d83bcbbaac25cc744f0eca5a87a4a64179613e193b91da675 size: 1373

发布镜像到阿里云容器镜像服务

docker 网络

查看网络

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
[root@localhost /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:d2:b1:f9 brd ff:ff:ff:ff:ff:ff
inet 192.168.112.128/24 brd 192.168.112.255 scope global noprefixroute dynamic ens33
valid_lft 1563sec preferred_lft 1563sec
inet6 fe80::d86c:8784:85bc:385d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:06:40:cc brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:06:40:cc brd ff:ff:ff:ff:ff:ff
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:b8:de:8e:fb brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
#docker0 是docker的网卡
#每个容器都对应一个网卡

**启动容器后的ip addr **

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
#容器启动后会多出一个网卡
7: veth6ce638d@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether e2:82:63:8d:f9:d2 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::e082:63ff:fe8d:f9d2/64 scope link
valid_lft forever preferred_lft forever

#通过docker inspect containerid 查看容器 ip地址
"SecondaryIPv6Addresses": null,
"EndpointID": "fbf8f5976927865501758b0bfffb8f6d9b3ded6b1866d7930fbc9d9e49dc1ade",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "70dee68966da2ee89e5c29d55f358c92c153db0bb239379193e4a79a636ff78e",
"EndpointID": "fbf8f5976927865501758b0bfffb8f6d9b3ded6b1866d7930fbc9d9e49dc1ade",


docker0是所有容器的网关,多有容器都与docker0是同一网段

不同容器之间是可以相互 ping 通的

实现ping容器名来连通

–link

这种方式已经不流行了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#使用link链接后可以直接使用容器名称来ping
docker run -d -it -P --name tomcat02 --link tomcat01 tomcat

# --link 的本质是:在/etc/hosts 文件中添加映射
#172.17.0.2 tomcat01 3cbc794672f4

[root@localhost /]# docker exec -it tomcat02 cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 tomcat01 3cbc794672f4
172.17.0.3 70a222b7a8a2

docker自定义网络

容器互联

网络模式

创建网络

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
[root@localhost /]# docker network create -d bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
cac186e0f9036603661970829a8d7efd14564db2a5e7c0687a402e7cde593307
[root@localhost /]# docker network ls
NETWORK ID NAME DRIVER SCOPE
70dee68966da bridge bridge local
2bafb20418b7 host host local
cac186e0f903 mynet bridge local
febb418c2c60 none null local

[root@localhost /]# docker network inspect mynet
[
{
"Name": "mynet",
"Id": "cac186e0f9036603661970829a8d7efd14564db2a5e7c0687a402e7cde593307",
"Created": "2022-04-13T15:11:40.89222403+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.0.0/16",
"Gateway": "192.168.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]

容器使用自定义网络

–net mynet

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
[root@localhost /]# docker run --name centos02 -d -it --net mynet centos

[root@localhost /]# docker network inspect mynet

"Containers": {
"3dd7a67c4fca04d2a24d876195260c7e494a72c03af31695ea54e4f30080b33d": {
"Name": "centos01",
"EndpointID": "37cd1c3199bc6a386efccff45523609f38cc30063f4e6de9f94ce63c49a2c4e6",
"MacAddress": "02:42:c0:a8:00:02",
"IPv4Address": "192.168.0.2/16",
"IPv6Address": ""
},
"ef58a6b1a377f6516838a00477bee0d6fbef56757dd684d7726e9632df2d00d9": {
"Name": "centos02",
"EndpointID": "3cba83a82663a555c7a7b3c8c12c01e71d8fddb077d4e97d63ad8cbb49b52f97",
"MacAddress": "02:42:c0:a8:00:03",
"IPv4Address": "192.168.0.3/16",
"IPv6Address": ""
}
},
]

ping centos02
pong

网络连通

本质上是将容器添加到目标网络中去

docker network connect

1
docker network connect network container

实战:部署redis集群

springboot微服务打包

常见的坑

docker run 之后发现容器停止了

1
2
#docker run image; 如果容器没有启动前台程序,docker没有发现应用,就会自动停止,
#nginx 启动后,发现自己没有程序,就会停止运行

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the d

1
2
#重启服务
service docker restart

推送到hub.docker.com遇到的问题

denied: requested access to the resource is denied

1
2
3
4
5
6
7
8
9
10
11
docker push diy-tomcat:1.0
The push refers to repository [docker.io/library/diy-tomcat]
174b635a5058: Preparing
9f7ffe7837ee: Preparing
34ee798fa05a: Preparing
e7f006c9c590: Waiting
174f56854903: Waiting
denied: requested access to the resource is denied

原因:push的镜像应该是account/imagesname:version
push 15296797459/diytomcat:version