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 用来配置一个应用所需镜像的依赖关系和启动方式,直接启动一个应用
附件