Docker入门到精通教程
为什么要用 Docker
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
安装
安装 yum-utils
软件包
shell
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装 DOCKER 引擎
shell
sudo yum install docker-ce docker-ce-cli containerd.io
启动 Docker
shell
sudo systemctl start docker
验证是否安装成功
shell
docker version
通过运行hello-world
映像来验证是否正确安装了 Docker Engine 。
shell
sudo docker run hello-world
常用命令
查看当前有些什么 images
shell
docker images
查看所有运行或者不运行容器
shell
docker ps -a
停止、启动、杀死、重启一个容器
shell
docker stop Name或者ID
docker start Name或者ID
docker kill Name或者ID
docker restart name或者ID
删除 images(镜像),通过 image 的 id 来指定删除谁
shell
docker rmi <image id>
CentOS 7 清理删除卸载 Docker 环境
杀死所有运行容器
shell
docker kill $(docker ps -a -q)
删除所有容器
shell
docker rm $(docker ps -a -q)
删除所有镜像
shell
docker rmi $(docker images -q)
停止 docker 服务
shell
systemctl stop docker
删除存储目录
shell
rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker
如果发现删除不掉,需要先 umount,如
shell
umount /var/lib/docker/devicemapper
卸载 docker 查看已安装的 docker 包
shell
yum list installed | grep docker
卸载相关包
shell
yum remove docker-engine docker-engine-selinux.noarch
docker-compose
对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。执行
docker-compose [COMMAND] --help
或者docker-compose help [COMMAND]
可以查看具体某个命令的使用格式。
docker-compose
命令的基本的使用格式是
shell
docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
2. 命令选项
-f, --file FILE
指定使用的 Compose 模板文件,默认为docker-compose.yml
,可以多次指定。-p, --project-name NAME
指定项目名称,默认将使用所在目录名称作为项目名。--x-networking
使用 Docker 的可拔插网络后端特性--x-network-driver DRIVER
指定网络后端的驱动,默认为bridge
--verbose
输出更多调试信息。-v, --version
打印版本并退出。
3.命令使用说明
up
格式为 docker-compose up [options] [SERVICE...]
。
-
该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。
-
链接的服务都将会被自动启动,除非已经处于运行状态。
-
可以说,大部分时候都可以直接通过该命令来启动一个项目。
-
默认情况,
docker-compose up
启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。 -
当通过
Ctrl-C
停止命令时,所有容器将会停止。 -
如果使用
docker-compose up -d
,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。 -
默认情况,如果服务容器已经存在,
docker-compose up
将会尝试停止容器,然后重新创建(保持使用volumes-from
挂载的卷),以保证新启动的服务匹配docker-compose.yml
文件的最新内容
down
- 此命令将会停止
up
命令所启动的容器,并移除网络
exec
- 进入指定的容器。
ps
格式为 docker-compose ps [options] [SERVICE...]
。
列出项目中目前的所有容器。
选项:
-q
只打印容器的 ID 信息。
restart
格式为 docker-compose restart [options] [SERVICE...]
。
重启项目中的服务。
选项:
-t, --timeout TIMEOUT
指定重启前停止容器的超时(默认为 10 秒)。
rm
格式为 docker-compose rm [options] [SERVICE...]
。
删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop
命令来停止容器。
选项:
-f, --force
强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。-v
删除容器所挂载的数据卷。
start
格式为 docker-compose start [SERVICE...]
。
启动已经存在的服务容器。
stop
格式为 docker-compose stop [options] [SERVICE...]
。
停止已经处于运行状态的容器,但不删除它。通过 docker-compose start
可以再次启动这些容器。
选项:
-t, --timeout TIMEOUT
停止容器时候的超时(默认为 10 秒)。
top
查看各个服务容器内运行的进程。
unpause
格式为 docker-compose unpause [SERVICE...]
。
恢复处于暂停状态中的服务。
shell
docker-compose up
docker-compose.yml参考文件
yml
version: '3.7'
services:
jenkins:
image: jenkins/jenkins:lts
container_name: jenkins
environment:
- TZ=Asia/Shanghai
volumes:
- /www/wwwroot/:/var/jenkins_home/workspace/
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
ports:
- "8080:8080"
expose:
- "8080"
- "50000"
privileged: true
user: root
restart: always
bt:
image: pch18/baota
container_name: bt
volumes:
- /www/wwwroot:/www/wwwroot
- ./baota/logs:/www/wwwlogs
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "8888:8888"
- "888:888"
- "3306:3306"
部署 Portiner 容器
拉取镜像
docker search portainer
拉取镜像
docker pull docker.io/portainer/portainer
shell
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
- 挂载本地: -v /var/run/docker.sock:/var/run/docker.sock
- 与容器的连接: /var/run/docker.socker
- 数据持久化: -v portainer_data:/data
访问地址:
js
ip:9000