Docker Tutorial
😄 @Auther: sizaif
📆 2021-06-08 15:38:53
[TOC]
docker docs
Install Docker Desktop for Windows
overview
Commands
Build
$ docker build [OPTIONS] PATH | URL | -
Run
Usage
$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Options
options
Name, shorthand | Default | Description |
---|---|---|
--add-host | Add a custom host-to-IP mapping (host:ip) | |
--attach , -a | Attach to STDIN, STDOUT or STDERR | |
--blkio-weight | Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0) | |
--blkio-weight-device | Block IO weight (relative device weight) | |
--cap-add | Add Linux capabilities | |
--cap-drop | Drop Linux capabilities | |
--cgroup-parent | Optional parent cgroup for the container | |
--cgroupns | API 1.41+ Cgroup namespace to use (host|private) ‘host’: Run the container in the Docker host’s cgroup namespace ‘private’: Run the container in its own private cgroup namespace ‘’: Use the cgroup namespace as configured by the default-cgroupns-mode option on the daemon (default) | |
--cidfile | Write the container ID to the file | |
--cpu-count | CPU count (Windows only) | |
--cpu-percent | CPU percent (Windows only) | |
--cpu-period | Limit CPU CFS (Completely Fair Scheduler) period | |
--cpu-quota | Limit CPU CFS (Completely Fair Scheduler) quota | |
--cpu-rt-period | API 1.25+ Limit CPU real-time period in microseconds | |
--cpu-rt-runtime | API 1.25+ Limit CPU real-time runtime in microseconds | |
--cpu-shares , -c | CPU shares (relative weight) | |
--cpus | API 1.25+ Number of CPUs | |
--cpuset-cpus | CPUs in which to allow execution (0-3, 0,1) | |
--cpuset-mems | MEMs in which to allow execution (0-3, 0,1) | |
--detach , -d | Run container in background and print container ID | |
--detach-keys | Override the key sequence for detaching a container | |
--device | Add a host device to the container | |
--device-cgroup-rule | Add a rule to the cgroup allowed devices list | |
--device-read-bps | Limit read rate (bytes per second) from a device | |
--device-read-iops | Limit read rate (IO per second) from a device | |
--device-write-bps | Limit write rate (bytes per second) to a device | |
--device-write-iops | Limit write rate (IO per second) to a device | |
--disable-content-trust | true | Skip image verification |
--dns | Set custom DNS servers | |
--dns-opt | Set DNS options | |
--dns-option | Set DNS options | |
--dns-search | Set custom DNS search domains | |
--domainname | Container NIS domain name | |
--entrypoint | Overwrite the default ENTRYPOINT of the image | |
--env , -e | Set environment variables | |
--env-file | Read in a file of environment variables | |
--expose | Expose a port or a range of ports | |
--gpus | API 1.40+ GPU devices to add to the container (‘all’ to pass all GPUs) | |
--group-add | Add additional groups to join | |
--health-cmd | Command to run to check health | |
--health-interval | Time between running the check (ms|s|m|h) (default 0s) | |
--health-retries | Consecutive failures needed to report unhealthy | |
--health-start-period | API 1.29+ Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s) | |
--health-timeout | Maximum time to allow one check to run (ms|s|m|h) (default 0s) | |
--help | Print usage | |
--hostname , -h | Container host name | |
--init | API 1.25+ Run an init inside the container that forwards signals and reaps processes | |
--interactive , -i | Keep STDIN open even if not attached | |
--io-maxbandwidth | Maximum IO bandwidth limit for the system drive (Windows only) | |
--io-maxiops | Maximum IOps limit for the system drive (Windows only) | |
--ip | IPv4 address (e.g., 172.30.100.104) | |
--ip6 | IPv6 address (e.g., 2001:db8::33) | |
--ipc | IPC mode to use | |
--isolation | Container isolation technology | |
--kernel-memory | Kernel memory limit | |
--label , -l | Set meta data on a container | |
--label-file | Read in a line delimited file of labels | |
--link | Add link to another container | |
--link-local-ip | Container IPv4/IPv6 link-local addresses | |
--log-driver | Logging driver for the container | |
--log-opt | Log driver options | |
--mac-address | Container MAC address (e.g., 92:d0:c6:0a:29:33) | |
--memory , -m | Memory limit | |
--memory-reservation | Memory soft limit | |
--memory-swap | Swap limit equal to memory plus swap: ‘-1’ to enable unlimited swap | |
--memory-swappiness | -1 | Tune container memory swappiness (0 to 100) |
--mount | Attach a filesystem mount to the container | |
--name | Assign a name to the container | |
--net | Connect a container to a network | |
--net-alias | Add network-scoped alias for the container | |
--network | Connect a container to a network | |
--network-alias | Add network-scoped alias for the container | |
--no-healthcheck | Disable any container-specified HEALTHCHECK | |
--oom-kill-disable | Disable OOM Killer | |
--oom-score-adj | Tune host’s OOM preferences (-1000 to 1000) | |
--pid | PID namespace to use | |
--pids-limit | Tune container pids limit (set -1 for unlimited) | |
--platform | API 1.32+ Set platform if server is multi-platform capable | |
--privileged | Give extended privileges to this container | |
--publish , -p | Publish a container’s port(s) to the host | |
--publish-all , -P | Publish all exposed ports to random ports | |
--pull | missing | Pull image before running (“always”|“missing”|“never”) |
--read-only | Mount the container’s root filesystem as read only | |
--restart | no | Restart policy to apply when a container exits |
--rm | Automatically remove the container when it exits | |
--runtime | Runtime to use for this container | |
--security-opt | Security Options | |
--shm-size | Size of /dev/shm | |
--sig-proxy | true | Proxy received signals to the process |
--stop-signal | SIGTERM | Signal to stop a container |
--stop-timeout | API 1.25+ Timeout (in seconds) to stop a container | |
--storage-opt | Storage driver options for the container | |
--sysctl | Sysctl options | |
--tmpfs | Mount a tmpfs directory | |
--tty , -t | Allocate a pseudo-TTY | |
--ulimit | Ulimit options | |
--user , -u | Username or UID (format: <name|uid>[:<group|gid>]) | |
--userns | User namespace to use | |
--uts | UTS namespace to use | |
--volume , -v | Bind mount a volume | |
--volume-driver | Optional volume driver for the container | |
--volumes-from | Mount volumes from the specified container(s) | |
--workdir , -w | Working directory inside the container |
# 启动容器
$ docker exec -it XXID /bin/bash
#创造容器
$ docker run -dit -p 8080:80 -v /e/windowssrc:容器里映射路径 --name 起个名字 ubuntu:你的镜像tag(默认是latest)
#创造容器并运行多个命令
$ docker run -dit XXX(images) /bin/bash -c "ls && pwd"
#删除容器
$ docker rm -f XXID
#查看所有的容器命令如下:
$ docker ps -a
容器打包并做成镜像
容器打包
$ docker commit containerId dockerUserName/XXX
注:containerId为你需要上传的容器id,dockerUserName为dockerHub的登录名,xxx为仓库名,当然也不一定非得是dockerUserName/xxx,只是为了方便起见
接下来为存在于本地的镜像打标签
$ docker tag imageName dockerUserName/xxx[:tag]
#注:imageName为你需要上传的镜像name,
# dockerUserName为dockerHub的登录名,xxx为仓库名,必须和你在dockerhub中新建的仓库名相同,tag不指定就是latest
打包好之后,就把打包好的镜像上传
$ docker push dockerUserName/xxx[:tag]
注:tag不指定就是latest
————————————————
git设置、查看、取消代理
设置代理:
$ git config --global http.proxy 'socks5://127.0.0.1:1080'
$ git config --global https.proxy 'socks5://127.0.0.1:1080'
查看代理:
$ git config --global --get http.proxy
$ git config --global --get https.proxy
取消代理:
$ git config --global --unset http.proxygit config --global --unset https.proxy
换源
针对docker容器的代理配置:
在创建(run)容器的时候,加上 --net=host 这个选项,就可以实现容器内外共享网络,然后再在容器内部配置git,就可以实现容器内代理了
Ubuntu系统中,软件源文件地址为:/etc/apt/sources.list
1.备份原来的源,将以前的源备份一下,以防以后可以用的。
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
2.打开/etc/apt/sources.list文件,在前面添加如下条目,并保存。
$ sudo vim /etc/apt/sources.list(可将vim更换为自己熟悉的编辑器)
添加源
#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse
3.更新
更新源
$ sudo apt-get update
如出现依赖问题,解决方式如下:
$ sudo apt-get -f install
更新软件:
$sudo apt-get upgrade
修改/etc/profile 打包后不生效得问题
解决办法:
可以将环境变量放到 /root/.bashrc
这个里面
docker 容器中 默认用户为 root, 将环境变量放到 ./bashrc
中