This is an old revision of the document!
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
sudo apt-get update sudo apt-get install docker-ce
sudo docker run hello-world
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce
sudo systemctl start docker
# Arch源自带docker安装包,所以直接使用pacman就可以安装 sudo pacman -Sy docker
在/etc/docker/daemon.json
(如果没有该文件则创建该文件)中添加如下内容:
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
如果是阿里云服务器,建议使用阿里云镜像加速,具体见https://www.jianshu.com/p/1a4025c5f186
如果将当前用户添加到docker用户组:
sudo usermod -aG docker $USER
如果将其他用户添加到docker用户组:
sudo usermod -aG docker <user_name>
docker pull <image_author>/<image_name>
拉取已有镜像,也可以通过docker build -t <image_name> .
通过Dockerfile生成镜像docker run --name <container_name> -p <host_port>:<container_port> -dit <image_name>[:image_version]
docker commit [-m <message>] <container_name> <image_name>[:image_version]
, docker push <username>/<image_name>[:tag]
docker images
, docker images -as
docker rmi <username>/<image_name>
docker save -o <image_file_path> <image_name>
docker load -i <image_file_path>
docker container
或docker ps
,docker ps -a
(查看所有容器,包括已经停止的容器), docker ps -as
(查看所有容器并显示容器占用的空间大小)docker stop <container_name_or_container_id>
docker start <container_name_or_container_id>
docker rm <container_name_or_container_id>
docker cp <系统文件路径> <容器>:<容器路径>
docker cp <容器>:<文件路径> <系统路径>
Java Web示例:
# 基于Uuntu16.04 FROM ubuntu:16.04 # 避免安装软件提示dpkg配置错误 ARG DEBIAN_FRONTEND=noninteractive # 支持显示中文 ENV LANG C.UTF-8 # 切换Ubuntu源为中国的源 RUN sed -i 's/archive/cn\.archive/g' /etc/apt/sources.list RUN apt-get update RUN apt-get install -y --no-install-recommends apt-utils RUN apt-get install -y --no-install-recommends bash-completion RUN apt-get install -y --no-install-recommends apt-transport-https ca-certificates RUN apt-get install -y --no-install-recommends vim openssh-server wget # 安装tomcat和mysql等 RUN apt-get install -y --no-install-recommends git maven openjdk-8-jre openjdk-8-jdk RUN apt-get install -y --no-install-recommends mariadb-server mariadb-client tomcat8 # 修改maven镜像 RUN wget -q https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/latest/jenkins.war RUN cp jenkins.war /var/lib/tomcat8/webapps # 修改ssh配置以允许远程登录root用户 RUN sed -i 's/PermitRootLogin\ prohibit-password/PermitRootLogin\ yes/g' /etc/ssh/sshd_config # 配置tomcat内存 RUN sed -i 's/Xmx128m/Xmx4096m/g' /etc/default/tomcat8 # 清理apt缓存 RUN rm -rf /var/cache/apt/archives/* # 开放端口 EXPOSE 3306 EXPOSE 8080 EXPOSE 80 EXPOSE 22 # 命令行自动补全 RUN echo "if ! shopt -oq posix; then" > ~/.bashrc RUN echo " if [ -f /usr/share/bash-completion/bash_completion ]; then" >> ~/.bashrc RUN echo " . /usr/share/bash-completion/bash_completion" >> ~/.bashrc RUN echo " elif [ -f /etc/bash_completion ]; then" >> ~/.bashrc RUN echo " . /etc/bash_completion" >> ~/.bashrc RUN echo " fi" >> ~/.bashrc RUN echo "fi" >> ~/.bashrc # 自启动脚本 RUN echo "#!/usr/bin/env bash" > ~/start.sh RUN echo "service ssh start" >> ~/start.sh RUN echo "service mysql start" >> ~/start.sh RUN echo "service tomcat8 start" >> ~/start.sh RUN chmod a+x ~/start.sh # 其他bashrc配置 RUN echo "alias ll='ls -alF'" >> ~/.start.sh CMD ~/start.sh && /bin/bash
Django示例
# 基于Uuntu16.04 FROM ubuntu:16.04 # 避免安装软件提示dpkg配置错误 ARG DEBIAN_FRONTEND=noninteractive # 支持显示中文 ENV LANG C.UTF-8 # 切换Ubuntu源为中国的源 RUN sed -i 's/archive/cn\.archive/g' /etc/apt/sources.list RUN apt-get update RUN apt-get install -y --no-install-recommends apt-utils RUN apt-get install -y --no-install-recommends bash-completion RUN apt-get install -y --no-install-recommends apt-transport-https ca-certificates RUN apt-get install -y --no-install-recommends vim openssh-server wget # 安装Apache2, python3等 RUN apt-get install -y --no-install-recommends git apache2 python3 python3-pip libapache2-mod-wsgi-py3 python3-setuptools python3-dev build-essential RUN apt-get install -y --no-install-recommends mariadb-server mariadb-client libmysqlclient-dev # 清理apt缓存 RUN rm -rf /var/cache/apt/archives/* # 开放端口 EXPOSE 3306 EXPOSE 8000 EXPOSE 80 EXPOSE 22 # 命令行自动补全 RUN echo "if ! shopt -oq posix; then" > ~/.bashrc RUN echo " if [ -f /usr/share/bash-completion/bash_completion ]; then" >> ~/.bashrc RUN echo " . /usr/share/bash-completion/bash_completion" >> ~/.bashrc RUN echo " elif [ -f /etc/bash_completion ]; then" >> ~/.bashrc RUN echo " . /etc/bash_completion" >> ~/.bashrc RUN echo " fi" >> ~/.bashrc RUN echo "fi" >> ~/.bashrc # 自启动脚本 RUN echo "#!/usr/bin/env bash" > ~/start.sh RUN echo "service ssh start" >> ~/start.sh RUN echo "service mysql start" >> ~/start.sh RUN echo "service apache2 start" >> ~/start.sh RUN chmod a+x ~/start.sh # 其他bashrc配置 RUN echo "alias ll='ls -alF'" >> ~/.bashrc CMD ~/start.sh && /bin/bash
参考Docker Change Port Mapping for an Existing Container(需要自备梯子)
sudo service docker stop
sudo vim /var/lib/docker/containers/<container id>/config.v2.json # 在ExposedPorts中添加类似"8888/tcp": {}
sudo vim /var/lib/docker/containers/<container id>/hostconfig.json # 添加或修改PortBindings,类似 "80/tcp":[{"HostIp": "","HostPort": "80"}],
sudo service docker start
sudo docker start <container_id_or_container_name>
在dockerfile中通过加入CMD service <service_name> start && /bin/bash
。参考链接
在run image的时候加入需要启动时执行的命令或者脚本即可,如果container已经存在则提交后再run,类似docker run --name=test -dit ubuntu service <service_name> start && /bin/bash
在执行docker run
命令时,增加参数--cap-add SYS_PTRACE
参考链接:How to change the docker image installation directory?,How do I change the Docker image installation directory?
Docker for Linux的镜像和容器文件默认存储在/var/lib/docker文件夹中,可以改为其他路径,修改步骤为
service docker stop
tar czf ~/docker.tar.gz /var/lib/docker
mv /var/lib/docker ~/
"graph": "/home/test/docker"
到daemon.json文件中。service docker start
docker start <docker_name>
按照网上常见的办法去安装docker-io,一直失败,无奈只能采用离线安装的方式进行解决,主要的解决办法如下: - 下载离线需要的依赖包, 备用下载地址: 百度云盘 提取码: rhi3 - 按照依赖包里面的readme 安装即可
在~/.vimrc中添加如下内容(参考Docker 容器中文乱码解决方案_cuigelasi的博客-CSDN博客_docker中文乱码)
:set encoding=utf-8 :set fileencodings=ucs-bom,utf-8,cp936 :set fileencoding=gb2312 :set termencoding=utf-8
参考:docker中使用Ubuntu中文乱码问题解决 - 尚叶鑫的个人主页
git config --global i18n.commitencoding utf-8 git config --global i18n.logoutputencoding utf-8
执行上述命令后,在~/.bashrc中加入export LESSCHARSET=utf-8