docker使用
安装docker
参考arch wiki和docker的weiki:
安装和卸载:
$ sudo pacman -S docker
Arch 启动Docker
Arch 下面是使用systemd来管理服务的,可以用systemctl命令来启动docker服务。
$ sudo systemctl start docker
如果想设置docker在arch下面开机自动启动,可以用下面的命令:
$ sudo systemctl enable docker
Arch下面删除Docker
删除Docker包。
$ sudo pacman -R docker
删除Docker包,同时删除其依赖的包。
重启docker
systemctl restart docker
删除Docker运行过程中产生的镜像、容器等文件。用户生成的配置文件需要手工删除。
$ rm -rf /var/lib/docker
china
Docker 官方中国区
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
ustc
https://docker.mirrors.ustc.edu.cn
$ docker --registry-mirror=https://registry.docker-cn.com daemon
OR
nano /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
#修改保存后重启 Docker 以使配置生效
systemctl restart docker
运行centos容器
安装centos:
sudo docker pull centos
开启容器:
-p端口映射
-d后台运行
-v目录映射 本地数据:容器数据
docker run -p 80:80 -p 8888:8888 -i -d -v /opt/centos:/centos -t centos /bin/bash
进入:
docker exec -it containerId bash
停止:
docker stop containerId // containerId 是容器的ID
使用docker环境搭建lamp环境
lamp和资源文件全部映射到物理机 lamp环境使用bitnami-lampstack-7.1.19-1-linux-x64-installer.run 安装lamp选择安装到/centos/lampstack-7.1.19-1
docker run -p 80:80 -p 3306:3306 -i -d -v /home/lxx/centos:/centos -t centos /bin/bash
进入
docker exec -it CID bash
进入/centos/lampstack-7.1.19-1(即物理机/home/lxx/centos) mysql默认端口3306
./ctlscript.sh ?
usage: ./ctlscript.sh help
./ctlscript.sh (start|stop|restart|status)
./ctlscript.sh (start|stop|restart|status) mysql
./ctlscript.sh (start|stop|restart|status) apache
help - this screen
start - start the service(s)
stop - stop the service(s)
restart - restart or start the service(s)
status - show the status of the service(s)
进入phpmyadmin
phpmyadmin.example.com
如果docker启动失败提示:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/vhs/mysql-8.0.11-0/mysql/tmp/mysql.sock' (2)
解决方案(不一定有效)
#文件/vhs/mysql-8.0.11-0/mysql/tmp/mysql.sock.lock被锁住了,改为/vhs/mysql-8.0.11-0/mysql/tmp/mysql.sock
mv /vhs/mysql-8.0.11-0/mysql/tmp/mysql.sock.lock /vhs/mysql-8.0.11-0/mysql/tmp/mysql.sock
#启动
/vhs/mysql-8.0.11-0/mysql/bin/mysqld --user=root
/vhs/mysql-8.0.11-0/ctlscript.sh start mysql
打包自己的docker镜像环境包,导入导出
打包
docker commit 5577a1aad419 lxx/kangle:001
下次直接运行
docker run -p 80:80 -p 3311:3311 -p 8888:8888 -p 3306:3306 -i -d -v /home/lxx/centos:/vhs -t f4c4a6eec9c8 /bin/bash
删除镜像(先删除容器)
docker rm continnorID
删除容器记录
docker ps -a
docker ps -a|awk '{print $1}'|xargs docker rm
docker rmi imagesID
将镜像保存为本地文件
docker save imageID -o ./ct.tar
加载刚才本地tar文件
docker load -i ./ct.tar
重命名镜像名称
docker tag eb40dcf64078 lxx/kangle:001
复制文件
docker cp [file] [container_name]:[container_path]
docker cp ./cemu-2.0-4-ubuntu-20.04-x64.zip x112:/opt/
win使用nerdctl管理docker_host
https://github.com/containerd/nerdctl
centos7安装最新的docker
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum -y install docker-ce docker-ce-cli containerd.io
从二进制安装最新docker
wget https://download.docker.com/linux/static/stable/x86_64/docker-26.1.1.tgz
tar xf docker-26.1.1.tgz
cp docker/* /usr/bin/
cat >/etc/systemd/system/containerd.service <<EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=1048576
TasksMax=infinity
OOMScoreAdjust=-999
[Install]
WantedBy=multi-user.target
EOF
systemctl enable --now containerd.service
cat > /etc/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP \$MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500
[Install]
WantedBy=multi-user.target
EOF
# 准备docker的socket文件
cat > /etc/systemd/system/docker.socket <<EOF
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF
# 创建docker组
groupadd docker
systemctl daemon-reload
# 启动docker
systemctl enable --now docker.socket && systemctl enable --now docker.service
# 验证
docker info
# 创建docker配置文件
mkdir -p /etc/docker/
cat >/etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://docker.2011101.xyz"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
systemctl restart docker
二进制安装 docker-compose
wget https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64
mkdir -p $HOME/.docker/cli-plugins/
cp ./docker-compose-linux-x86_64 $HOME/.docker/cli-plugins/docker-compose
# 使用
docker compose
# OR
cp ./docker-compose-linux-x86_64 /usr/bin/docker-compose
# 使用
docker-compose