Docker相关

一、安装

在 Ubuntu 22.04 LTS 中安装:

1、更新 Ubuntu(用的是清华源)

$ sudo apt update

$ sudo apt upgrade

$ sudo apt full-upgrade

2.添加 Docker 库

首先,安装必要的证书并允许 apt 包管理器使用以下命令通过 HTTPS 使用存储库:

 sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

然后运行下列命令添加 Docker 的官方 GPG 密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

添加 Docker 官方库:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

使用命令更新 Ubuntu 源列表:

sudo apt update

3.安装docker

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

二.docker命令

1.安装完成后,使用以下命令启动docker

systemctl start docker    //开启

systemctl status docker  //查看状态

sudo docker version    //查看版本

例子:

$:sudo docker version

Client: Docker Engine - Community
 Version:           23.0.1
 API version:       1.42
 Go version:        go1.19.5
 Git commit:        a5ee5b1
 Built:             Thu Feb  9 19:47:01 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.1
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.5
  Git commit:       bc3805a
  Built:            Thu Feb  9 19:47:01 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.18
  GitCommit:        2456e983eb9e37e47538f59ea18f2043c9a73640
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
2.镜像

docker images   //查看镜像

docker search ubuntu   //搜索镜像

sudo docker pull ubuntu:22.04  //拉取镜像

docker rmi 镜像ID   //删除镜像

3.容器

sudo docker ps   //查看在运行容器

sudo docker ps  -a   //查看所有容器,包括没有运行的

sudo docker ps -l   //查看最后运行容器

sudo docker ps  -f status=exited   //查看停止的容器

(1)交互方式创建容器,即创建容器后就进入到容器里

sudo docker run -it --name=ubuntu01 ubuntu:22.04 /bin/bash

-i表示运行容器

-t表示容器启动后会进入其命令行,加入这两个参数后容器创建就能登陆进去,即分配一个伪终端

--name为创建的容器命名

-d创建一个守护式容器在后台运行

-p表示端口映射

(2)守护式容器在后台运行创建

sudo docker run -id --name=ubuntu02 ubuntu:22.04

sudo docker exec -it c1d3b973dd70 /bin/bash      //进入其容器命令行

(3)相关命令

docker stop 5fec76764085    //停止容器运行  5fec76764085为CONTAINER ID

docker start 5fec76764085   //容器运行

docker cp 文件名  5fec76764085:/usr/local/     //复制文件到容器里

sudo docker inspect --format='{{.NetworkSettings.IPAddress}}' c1d3b973dd70    //查看容器IP

(4)Nginx部署

sudo docker pull nginx

sudo docker run -di --name=mynginx -p 80:80 nginx

 (5)配置国内Docker镜像加速

创建/etc/docker/daemon.json文件(默认不存在)

{

"registry-mirrors": [

"https://ung2thfc.mirror.aliyuncs.com",

"https://registry.docker-cn.com",

"http://hub-mirror.c.163.com",

"https://docker.mirrors.ustc.edu.cn"

]

}

重新加载并重启

sudo systemctl daemon-reload

sudo systemctl restart docker

(6) WordPress部署

拉取WordPress和mysql

docker pull wordpress:latest
docker pull mysql:5.6

使用Mysql镜像运行容器
docker run -d --privileged=true --name OLDMysql -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 33306:3306 mysql:5.6

参数说明:

  • -p: 端口映射,33306表示宿主,3306表示容器中的端口。 这里表示将宿主机的33306映射给镜像的3306.

  • -e: 环境变量, 环境变量和具体的Docker容器制作时设置有关,这里表示设置镜像中MySQL的root 密码时123456

  • --name: 容器名称

  • --privileged=true: CentOS系统下的安全Selinux禁止了一些安全权限,导致MySQL容器在运行时会因为权限不足而报错,所以需要增加该选项

  • -v: 指定数据卷,也就是将我们MySQL容器的/var/lib/mysql映射到宿主机的/data/mysql

运行后使用 docker ps -a 查看运行状况,如果出现错误,使用 docker stop 容器名 停止运行,然后用 docker rm 容器名 删除容器。如图这里的容器名是 OLDMysql。

之后使用上面的命令,去掉 -d 选项重新运行排查错误。

运行wp
docker run -d --name OLDwp -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=123456 -e WORDPRESS_DB_NAME=myword -p 1080:80 --link OLDMysql:mysql wordpress
  • -e WORDPRESS_DB_HOST : 链接的docker的MySQL的IP地址和端口,一般设置成mysql表示用默认的设置

  • -e WORDPRESS_DB_USER : 以什么用户使用MySQL,默认是root

  • -e WORDPRESS_DB_PASSWORD : 这设置MySQL的登录用户密码,由于上一项是默认的root,所以这一项和之前的"MYSQL_ROOT_PASSWORD“要相同。

  • -e WORDPRESS_DB_NAME: 数据库的表名,如果不写这一个配置,默认为”wordpress"

  • 注意 --link 链接到MySQL容器的名称

备注:容器的80端口映射给主机的1080,不需要用到root权限,但CentOS默认的防火墙禁止了大于1000后的所有端口,所以要开启这个端口

 

posted @ 2023-02-22 15:17  小海com  阅读(35)  评论(0编辑  收藏  举报