安装Docker yum安装
检查版本
1 2 3 4 5 6 $ docker version Client: Version: 1.13.1 API version: 1.26 Package version: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
启动后台服务
1 2 3 4 5 $ systemctl start docker $ systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2020-01-07 15:55:08 CST; 5s ago
设置开机自启动
1 2 $ systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
改变docker存储位置 通常我们系统所在的硬盘比较小,会再挂载一个容量更大的硬盘作为数据存储用。
以下命令用作改变docker默认的存储位置。
1 2 3 4 $ systemctl stop docker $ mv /var/lib/docker/ /data/docker/ $ ln -s /data/docker/ /var/lib/docker $ systemctl start docker
修改镜像源 目前国内可用的镜像源是不断变化的,~_~
1 2 3 4 5 6 7 8 $ vim /etc/docker/daemon.json { "registry-mirrors" : [ "https://dockerproxy.cn" ] } $ systemctl daemon-reload $ systemctl restart docker
Docker安装PostgreSQL 10 1 2 3 4 5 6 7 8 $ docker pull postgres:10.11 $ docker run \ --name "pg10" \ -e POSTGRES_PASSWORD=123456 \ -p 5432:5432 \ -d --restart "always" \ -v /home/data/pgdata:/var/lib/postgresql/data \ postgres:10.11
–name 容器名称
-e 设置环境变量
-p 端口映射(前面的是host端口,后面的是container的端口)
-d 在后台运行容器
–restart 重启策略( https://docs.docker.com/config/containers/start-containers-automatically/ )
-v 将host机器的目录mount到container, 前面的是host机器目录,后面的是container的目录
测试容器是否运行成功
1 2 3 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cdcc4e0769f5 postgres:10.11 "docker-entrypoint..." 35 seconds ago Up 34 seconds 0.0.0.0:5432->5432/tcp pg10
Docker安装Microsoft SQL Server 1 2 3 4 5 6 7 8 9 $ docker pull mcr.microsoft.com/mssql/server:2017-latest $ docker run \ --name "mssql" \ -e 'ACCEPT_EULA=Y' \ -e 'SA_PASSWORD=123456' \ -p 1433:1433 \ -d --restart "always" \ -v /home/data/mssqldata:/var/opt/mssql/data \ mcr.microsoft.com/mssql/server:2017-latest
Docker安装nginx 1 2 3 4 5 6 $ docker run --name topikm6doc \ -p 8888:80 \ -d \ --rm \ -v /data/docker_data/topikm6doc/html:/usr/share/nginx/html \ nginx
进入容器 1 $ docker exec -it pg10 bash
退出
常用docker命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 $ docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf . $ docker cp mysqld.cnf mysql:/etc/mysql/mysql.conf.d $ docker inspect topikm6doc | grep Mounts -A 20 "Mounts" : [ { "Type" : "bind" , "Source" : "/data/docker_data/topikm6doc/html" , "Destination" : "/usr/share/nginx/html" , "Mode" : "" , "RW" : true , "Propagation" : "rslave" } ], $ docker volume ls $ docker volume inspect thdash_app-db-data docker system prune docker system prune --all docker image prune --all --filter "until=4320h"
常见问题
重启容器出现错误“Error response from daemon: Cannot restart container wp: oci runtime error: container with id exists: 547ecaa980a4be72120176fddc580c4fd3526a3c08831e016f996c01be36d846”
1 $ rm -rf /run/runc/547ecaa980a4be72120176fddc580c4fd3526a3c08831e016f996c01be36d846/
使用 docker update
修改运行中容器的重启策略
你可以直接通过 docker update
命令为运行中的容器设置重启策略,而无需停止容器:
1 $ docker update --restart=always <容器名称或ID>
其他可选的 --restart
策略包括:
no
:不自动重启容器(默认值)。
on-failure[:最大重试次数]
:当容器因错误退出(非零退出码)时重启,可以指定最大重试次数。
always
:无论容器因何原因退出,始终重启。
unless-stopped
:始终重启容器,除非手动停止。
Reference