学习docker,首先必须知道仓库,镜像和容器的概念,仓库(Repository)是集中存放镜像的地方,镜像是打包的应用和文件系统,我们将镜像从仓库下载到本地,通过镜像来创建容器。我们可以使用docker --help来初步了解docker命令

一、设置仓库

1、安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

yum install -y yum-utils device-mapper-persistent-data lam2

2、使用以下命令来设置稳定的仓库

(中央仓库)yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
(阿里仓库)yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

二、安装 Docker Engine-Community

1、安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:

yum install -y docker-ce

2、查看docker版本

docker -v

三、Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。

要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:

1、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。

yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64 3:19.03.8-3.el7 docker-ce-stable

docker-ce.x86_64 3:19.03.7-3.el7 docker-ce-stable

2、通过其完整的软件包名称安装特定版本,

yum install -y docker-ce-19.03.8

3、启动docker

systemctl start docker

4、Docker 镜像加速

Ubuntu16.04+、Debian8+、CentOS7

对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

{"registry-mirrors":["https://hd86vhxg.mirror.aliyuncs.com"]}

之后重新启动服务:

systemctl daemon-reload

systemctl restart docker

5、检查加速器是否生效

ntpdate cn.pool.ntp.org

docker info

6、查看镜像

docker images #查看所有镜像

docker images -q #查看所有镜像ID

7、搜索镜像

docker search 镜像名称

8、下载镜像

docker pull 镜像名称:版本号

具体版号本官网hub.docker.com查找

9、删除镜像

docker rmi ID

docker rmi 镜像名称:版本号

10、删除所有镜像

docker rmi `docker images -q`

11、创建容器

docker run -it --name=cityhousedown centos:7 /bin/bash

docker run -id --name=cityhouseup centos:7 /bin/bash

-t: 在新容器内指定一个伪终端或终端。

-i: 允许你对容器内的标准输入 (STDIN) 进行交互。。

-d:以后台方式运行容器

-it:创建容器为交互式容器,退出容器后,容器自动关闭

-id:创建容器为守护式容器。退出容器后,容器不会关闭

--name:为创建的容器命名

-p 8081:8080    8081为服务器对外IP,8080为容器内部IP

-v /data:/App    /data为服务器目录,/App为容器内部目录

--restart=always  容器开机启动

如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

查看运行容器

docker ps #查看运行容器

docker ps -a #查看所有容器

docker ps -l #查询最后一次创建的容器

12、进入容器

docker attach 1e560fca3906 注意: 如果从这个容器退出,会导致容器的停止。

docker exec -it ID/容器名 /bin/bash #退出容器终端,不会导致容器的停止。

13、停止容器

docker stop ID/容器名

14、启动一个已停止的容器

docker start ID/容器名

15、重启容器

docker restart ID/容器名

16、删除容器

docker rm ID/容器名

docker rm `docker ps -aq` #删除全部容器。正在运行的容器不能删除

docker container prune #清理掉所有处于终止状态的容器

删除容器时,容器必须是停止状态,否则会报如下错误

Error response from daemon: You cannot remove a running container d58b840063c3ef86c7ea034b080217615e231d021adbab83114ba7e3b084be7d. Stop the container before attempting removal or force remove

17、查看容器信息

docker inspect ID/容器名

18、导出容器快照

docker export ID/容器名 > 包名.tar

四、部署应用

1、部署MySQL

(1)、拉取镜像

docker search mysql:5.6 docker pull mysql:5.6

(2)、创建容器,设置端口映射、目录映射

docker run -id -p 3306:3306 --name=mysql -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/logs:/var/logs/mysql -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6

2、部署tomcat

docker search tomcat

docker pull tomcat

创建容器,设置端口映射、目录映射

docker run -id -p 8080:8080 --name=tomcat -v /data/tomcat/webapps:/usr/local/tomcat/webapps tomcat

3、部署nginx

(1)、下拉镜像

docker search nginx

docker pull nginx

 (2)、创建容器

docker run -id --name=nginx -p 80:80 -v /data/nginx/conf.d:/etc/nginx/conf.d -v /data/nginx/logs:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html nginx

(3)、部署完需要重启docker

systemctl restart docker

(4)、tag标记

docker tag tomcat tomcattag

五、搭建私有仓库

1、拉取

docker pull registry

2、创建容器

docker run -id --name=registry -p 5000:5000 registry

3、修改文件

vim /etc/docker/daemon.json

{"insecure-registries":["http://10.11.2.92:5000"]}

4、重启docker

systemctl daemon-reload

systemctl restart docker

docker start registry

5、浏览器访问

http://10.11.2.92:5000/v2/_catalog,看到{"repositories":[]}表示私有仓库搭建成功

六、镜像上传到私有仓库

1、标记镜像为私有仓库的镜像(给镜像添加一个带有私有仓库IP的TAG,这样后面才能成功推送到私有仓库)

docker tag centos:7 10.11.2.92:5000/centos:7

docker tag 镜像名:版本号(或ID) 新镜像名称:版本号

2、上传标记的镜像

docker push 10.11.2.92:5000/centos:7

docker push 后镜像名称:版本号

3、访问 curl http://10.11.2.92:5000/v2/_catalog

{"repositories":["centos"]}

拉取私有镜像

docker pull 10.11.2.92:5000/centos:7

七、容器导入导出

1、导出容器

docker export fb2ad3099e1e > /root/mysql.tar.gz

2、导入容器为镜像

cat mysql.tar.gz |docker import - mysql11

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐