docker容器

安装

CentOS

系统要求
CentOS 7 或 8

参考官方安装教程
先卸载旧版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

下面可以从3种安装方式中挑选安装

安装方式1:使用Docker 的存储库‎‎并从中安装,以方便安装和升级任务。这是官方建议的方法。‎

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

安装方式2:从.rpm安装包安装

打开下载链接 https://download.docker.com/linux/centos/
选择CentOS版本, 然后进入 x86_64/stable/Packages/ , 下载 .rpm 文件

sudo yum install /path/to/package.rpm

如果想要升级docker版本,则下载新的rpm文件并安装即可,注意升级时应该使用 yum upgrade 代替 yum install

安装方式3:自动安装脚本

在 get.docker.com 、 test.docker.com 网站可以下载自动安装脚本,可以方便的在开发和测试环境中安装,不建议在生产环境中使用这个方式

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Ubuntu

参考官方安装教程

系统要求
Ubuntu Hirsute 21.04
Ubuntu Groovy 20.10
Ubuntu Focal 20.04 (LTS)
Ubuntu Bionic 18.04 (LTS)
Ubuntu Xenial 16.04 (LTS)

先卸载旧的版本

sudo apt-get remove docker docker-engine docker.io containerd runc

下面可以从3种安装方式中挑选安装

安装方式1:使用Docker 的存储库‎‎并从中安装,以方便安装和升级任务。这是官方建议的方法。‎

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=amd64 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
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

安装方式2:从.deb安装包安装

打开下载链接 https://download.docker.com/linux/ubuntu/dists/
选择ubuntu版本, 然后进入 pool/stable/, 选择系统的CPU架构 amd64, armhf, or arm64, 下载 .deb 文件

sudo dpkg -i /path/to/package.deb

如果想要升级docker版本,则下载新的deb文件并安装即可

安装方式3:自动安装脚本

在 get.docker.com 、 test.docker.com 网站可以下载自动安装脚本,可以方便的在开发和测试环境中安装,不建议在生产环境中使用这个方式

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

安装完成后的后续操作

后续建议参照 https://docs.docker.com/engine/install/linux-postinstall/ 执行linux安装docker的后续操作,这些操作可以增加docker的安全和易用性

docker命令

容器生命周期管理
    run 运行一个容器 run -i -t 交互式运行
    start/stop/restart
    kill 杀死一个容器
    rm 删除一个容器
    	docker rm `docker ps -a|grep Exited|awk '{print $1}'`
    pause/unpause 暂停容器/解除暂停
    create 创建一个新的容器但不启动它 用法同 docker run
    exec 在运行的容器中执行命令 exec -i -t  mynginx /bin/bash
容器操作
    ps 查看正在运行的容器 -a 全部(包括没有运行的)
    inspect 获取容器/镜像的元数据
    	docker inspect -f '{{.Id}}' name 获得容器的ID全称
    	docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq) 获得所有docker容器和ip
    top 查看容器中运行的进程信息
    attach 连接到正在运行中的容器
    events
    logs 查看日志
        docker logs -f name # 追踪显示最新日志
    wait
    export
    port
容器rootfs命令
    commit
    cp
    diff
镜像仓库
    login
    pull 下载一个镜像,拉取或者更新指定镜像
    push
    search 查找镜像
本地镜像管理
    images 查看本机镜像
    rmi 删除镜像
    tag 给源中镜像打标签
    build
    history
    save
    import
info|version docker版本

卸载docker

卸载docker引擎,命令行工具

sudo apt-get purge docker-ce docker-ce-cli containerd.io

删除镜像、容器、配置文件

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

demo:用docker配置mysql、php、nginx

docker pull mysql # 拉取
docker run --name hismysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7
# 这里使用最新版mysql会有加密方式上的问题,导致phpmyadmin不能使用,所以版本我使用的5.7

php-fpm
docker run -d -v /home/zoollcar/me/hisdockerconfs/www/html:/var/www/html -p 9000:9000 --link hismysql:mysql --name hisphp php:7.2-fpm

# docker容器中可以这样来安装php插件
docker-php-ext-install pdo_mysql

# 重启启用pdo_mysql
docker restart hisphp

# nginx
# 这里/home/zoollcar/me/hisdockerconfs/nginx.conf 是我为nginx配置文件进行的挂载
要先安装并把nginx配置文件临时容器拷贝到宿主机,因为宿主机如果nginx配置文件与容器nginx不一致无法挂载
docker run -d -p 80:80 --name hisnginx --link hisphp:phpfpm nginx
docker cp hisnginx:/etc/nginx/nginx.conf /home/zoollcar/me/hisdockerconfs/nginx.conf
docker stop hisnginx
docker rm hisnginx
# 现在进行正式安装
docker run -d -p 80:80 --name hisnginx \
-v /home/zoollcar/me/hisdockerconfs/www/html:/usr/share/nginx/html:ro \
-v /home/zoollcar/me/hisdockerconfs/nginx:/etc/nginx:ro \
--link hisphp:phpfpm nginx

# 修改nginx的配置文件让它支持php
# nginx.conf 的配置文件添加
​```
location ~ \.php$ {
        root           /var/www/html;
        fastcgi_index  index.php;
        fastcgi_pass   phpfpm:9000; #这里改成我们之前--link进来的容器,也可以直接用php容器的ip
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 如果你的根目录和php容器的根目录不一样,这里的$document_root需要换成你php下的根目录,不然php就找不到文件了
        include fastcgi_params;                                                                                                                                               
    }
​```


phpmyadmin
docker run --name hismyadmin -d --link hismysql:db -p 8880:80 phpmyadmin/phpmyadmin # 拉取并连接到本地testsql容器

# 使用composer安装php框架
# 因网络问题可能不能使用
docker run -it --name composer -v /home/zoollcar/me/hisdockerconfs/www/html:/app --privileged=true composer <要执行的composer命令>

demo:将正在运行的容器保存下来迁移

docker stop safe-wordpress
docker commit safe-wordpress zoo_wordpress:1.0
docker start safe-wordpress

docker save zoo_wordpress:1.0 > zoo_wordpress.tar
docker save zoo_notebook:1.0 > zoo_notebook.tar
docker save zoo_hustoj:1.0 > zoo_hustoj.tar

# 将zoo_wordpress.tar传到另一个服务器,导入
docker load < zoo_wordpress.tar

创建自己的docker镜像

dockerfile 文件用于创建新的镜像文件
docker-compose 用来配置一个应用所需镜像的依赖关系和启动方式,直接启动一个应用

附件

1

22