Loading... ## 安装 推荐使用官方的脚本 : ```bash curl -sSL https://get.daocloud.io/docker | sh ``` 适用于 Ubuntu, Debian, CentOS 等大部分 Linux 系统,会 3 小时同步一次官方资源。 Ubuntu18.04 可以直接使用以下指令: ```bash sudo apt install docker.io ``` **openSUSE** 安装脚本: ```bash #!/bin/sh sudo zypper -n in docker sudo systemctl start docker sudo systemctl enable docker sudo gpasswd -a "${USER}" docker ``` ### 离线安装 1. 准备 docker离线安装包 可以在[官方离线包下载地址](https://download.docker.com/linux/static/stable/x86_64/)里面下载。 2. 准备 docker.service 系统配置文件 ```xml [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target ``` 3. 准备安装脚本 ```bash #!/bin/sh echo '解压tar包...' tar -xvf $1 echo '将 docker 目录移到 /usr/bin 目录下...' cp docker/* /usr/bin/ echo '将 docker.service 移到 /etc/systemd/system/ 目录...' cp docker.service /etc/systemd/system/ echo '添加文件权限...' chmod +x /etc/systemd/system/docker.service echo '重新加载配置文件...' systemctl daemon-reload echo '启动docker...' systemctl start docker echo '设置开机自启...' systemctl enable docker.service echo 'docker安装成功...' docker -v ``` 4. 卸载脚本 ```sh #!/bin/sh echo '删除docker.service...' rm -f /etc/systemd/system/docker.service echo '删除docker文件...' rm -rf /usr/bin/docker* echo '重新加载配置文件' systemctl daemon-reload echo '卸载成功...' ``` 5. 执行脚本 ```bash # 这里的 docker-file 是第一步下载的离线安装包 sudo ./install.sh <docker-file> ``` **Reference: ** https://www.jianshu.com/p/64a470628e49 ## 换源 ### 国内的镜像源 - docker官方中国区 `https://registry.docker-cn.com` - 网易 `http://hub-mirror.c.163.com` - USTC `http://docker.mirrors.ustc.edu.cn` - 阿里云 `http://<你的ID>.mirror.aliyuncs.com` > 阿里源需要自己去获取 id ,获取地址为 https://cr.console.aliyun.com/cn-qingdao/mirrors > > 左边找镜像加速即可。 ### 方法 常用的方法是编辑 `/etc/docker/daemon.json` 这个文件。如果不存在的话创建一个即可。 ```json // 输入下面的内容即可 { "registry-mirrors" : [ "http://docker.mirrors.ustc.edu.cn" ] } ``` > 换完源后记得重启 docker > > ```bash > sudo systemctl daemon-reload > sudo systemctl restart docker.service > ``` ## 常用命令 ### 启动容器 #### docker run ```bash # 交互式启动,并以 bash 作为 shell sudo docker run -it <image_name> /bin/bash # 后台启动 sudo docker run -d -it <image_name> ``` > 这里的 image_name 要包含 image 的 tag 。比如 node:12.17.0 。缺省的话会使用 latest 标签。 #### docker start ```bash sudo docker start <option> <container_name> ``` > docker start 是启动一个已创建的容器,run 则是创建一个新容器并启动。 ### 查看容器 ```bash sudo docker ps # 如果要查看未启动的 container 则可以加上 -a 参数 sudo docker ps -a ``` ### 进入容器 ```bash # 进入正在运行的容器并启动 bash sudo docker exec -it <id/container_name> /bin/bash ``` > 如果要使用不同用户可以加上 `--user` 参数 > > ```bash > # 以输入的 username 身份登录 > sudo docker exec -it --user <username> <container-id> /bin/bash > ``` ### 退出容器且不关闭 如果进入到容器内想要退出,直接使用 exit 的话会让容器变为 exited 状态,即使后台有进程在执行。这时候可以使用 `ctrl + P + Q` 来进行退出,这样的话 docker 不会关闭容器。 > 注意如果没有前台进程的话,容器一样会退出。这是容器的运行机制导致的。 ### docker 与宿主机之间拷贝文件 ```bash # 拷贝容器中的文件到宿主机 sudo docker cp CONTAINER_NAME:/path/to/file/in/docker /path/to/file # 拷贝宿主机中的文件到容器 sudo docker cp /path/to/file CONTAINER_NAME:/path/to/file/in/docker ``` > 注意无论容器有没有启动,这个拷贝命令都会生效。 最后修改:2021 年 05 月 24 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏