Docker的部署和使用

docker是什么

Docker是基于Go语言实现的开源项目。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的软件(或者WEB应用等)及其运行环境能够做到“一次镜像,处处运行”。

docker安装

设置存储库

安装yum-utils软件包(提供yum-config-manager实用程序)并设置存储库。

Plaintext
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装Docker引擎

  1. 安装最新版本的Docker Engine、containd和Docker Compose,或转到下一步安装特定版本:

Plaintext
#安装最新版本
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 列出docker 版本
yum list docker-ce --showduplicates | sort -r

## 安装指定版本的docker 例如 docker-ce-18.09.1
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

  1. 如果系统提示接受GPG密钥,请验证指纹是否匹配060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果匹配,请接受。
  1. 此命令安装Docker,但它不会启动Docker。它还创建一个docker组,但是,默认情况下,它不会向组添加任何用户。

启动Docker

Plaintext
systemctl start docker
systemctl enable docker

通过运行hello-world映像来验证Docker引擎是否正确安装。

Plaintext
$ sudo docker run hello-world

此命令下载测试映像并在容器中运行。当容器运行时,它会打印消息并退出。

This installs and runs Docker Engine. Use sudo to run Docker commands. Continue to Linux postinstall to allow non-privileged users to run Docker commands and for other optional configuration steps.

Docker的卸载

SQL
#杀死docker有关的容器:
docker kill $(docker ps -a -q)
#删除所有docker容器:
docker rm $(docker ps -a -q)
#删除所有docker镜像:
docker rmi $(docker images -q)
#停止 docker 服务:
systemctl stop docker
#删除docker相关存储目录:(分别进行执行以下四个命令)
rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker
#如果删除不掉,则先umount:
umount /var/lib/docker/devicemapper

卸载工作

SQL
#查看系统已经安装了哪些docker包
yum list installed | grep docker
#卸载相关包
yum remove containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64 docker-ce-rootless-extras.x86_64 docker-scan-plugin.x86_64

Docker Swarm集群搭建

现在将node1节点设成manager节点,node2设成work节点;

docker节点切换成Swarm模式

Plaintext
#使用下边命令在将节点切到Swarm模式
docker swarm init \
--advertise-addr 192.168.146.130:2377 \
--listen-addr 192.168.146.130:2377

  • 命令解读:

docker swarm init 会通知 Docker 来初始化一个新的 Swarm,并将自身设置为第一个管理节点。同时也会使该节点开启 Swarm 模式。
--advertise-addr 指定其他节点用来连接到当前管理节点的 IP 和端口。这一属性是可选的,当节点上有多个 IP 时,可以用于指定使用哪个IP。此外,还可以用于指定一个节点上没有的 IP,比如一个负载均衡的 IP。
--listen-addr 指定用于承载 Swarm 流量的 IP 和端口。其设置通常与 --advertise-addr 相匹配,但是当节点上有多个IP 的时候,可用于指定具体某个 IP。并且,如果 --advertise-addr 设置了一个远程 IP 地址(如负载均衡的IP地址),该属性也是需要设置的。建议执行命令时总是使用这两个属性来指定具体 IP 和端口。

  • 然后可以node1上执行docker swarm join-token 命令

docker swarm join-token 命令用来获取添加新的工作节点和管理节点到 Swarm 的命令和 Token。

Shell
#获取worker节点的sarm命令和Token
docker swarm join-token worker

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-2e715crzqrkde0hnkjkn1krjcb9v01bqy8n8y774g7wk99y1z0-3qj60e7euv3hbncqlbhx98tcr 192.168.146.130:2377
    
#获取manager节点的sarm命令和Token
docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-2e715crzqrkde0hnkjkn1krjcb9v01bqy8n8y774g7wk99y1z0-5nmetwv2xycbdysffhzkmjblk 192.168.146.130:2377

  • 使用worker的swarm命令和Token将node2节点加入swarm作为worker节点

Shell
docker swarm join \
--token 2e715crzqrkde0hnkjkn1krjcb9v01bqy8n8y774g7wk99y1z0-5nmetwv2xycbdysffhzkmjblk \
192.168.146.130:2377

  • 通过docker node ls 命令来列出 Swarm 节点

Shell
docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
ivi8cm40s03jd6hz58jkevh2d *   node1      Ready     Active         Leader           20.10.17
uvhdeyjtnb6kz3kteaehj1hej     node2      Ready     Active                          20.10.17                         20.10.17

docker启动mysql

  • 首先从docker的git库中下载安装mysql的镜像,可以自选版本Docker 。

Shell
docker pull mysql:5.7

  • 查看本地镜像

Shell
docker images

 

  • 运行容器

Shell
docker run -d --name=mysql-server -p 3306:3306 -v mysql-data:/root/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7

  • 连接mysql

Shell
docker exec -it mysql-server mysql -u root -p

常用命令

 

Docker run命令

常用参数:

  • -d:后台运行容器,并返回容器ID

不加这一个默认直接进入容器,之后如果退出则会连着容器一起挂起(暂停运行)。

  • -i:以交互模式运行容器,通常与-t同时使用;
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

同时使用it之后,你就可以进入到这个容器里面,就像在一台新的Linux主机中了

  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口;
  • --name="nginx-lb": 为容器指定一个名称;
  • -m :设置容器使用内存最大值;
  • -e username="ritchie": 设置环境变量;
  • --volume , -v: 绑定一个卷

格式为主机目录:容器目录,这条命令也是非常有用的,如果不绑定目录,那么在删除容器的时候,里面的所有数据也一起删除了。但如果使用了挂载卷的话,直接存在宿主机对应文件夹中,下次开启容器还能直接使用。通常用于存一些配置文件、数据什么的。

  • --restart 用于指定容器重启的策略,策略有以下几种:
  • no 默认值,表示容器退出时,docker不自动重启容器

docker run --restart=no [容器名]

  • on-failure 若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃

docker run --restart=on-failure:3 [容器名]

  • always 容器退出时总是重启

docker run --restart=always [容器名]

  • unless-stopped 容器退出时总是重启,但不考虑Docker守护进程启动时就已经停止的容器

docker run --restart=unless-stopped [容器名]

  • 如果容器启动时没有设置–restart参数,则通过下面命令进行更新:

docker update --restart=always [容器名]

例如:

Plaintext
docker run --name mynginx -p 8080:80 -v /data:/data -d nginx:latest

#
说明:
docker run:启动一个容器。
--name mynginx:将容器命名为mynginx。
-p 8080:80:将容器的 80 端口映射到主机的 8080 端口
-v /data:/data:将主机的目录 /data 映射到容器的 /data
-d:以后台模式启动。
nginx:latest:镜像来源:nginx:latest

删除images

Plaintext
docker rmi -f 镜像id

删除container命令

Plaintext
docker rm -f container-id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值